mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-02-23 05:58:36 -05:00
258 lines
13 KiB
HTML
258 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<title>Dich'blog</title>
|
||
|
||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||
<meta name="robots" content="noodp"/>
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
|
||
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
|
||
|
||
<meta name="description" content="">
|
||
|
||
<meta property="og:description" content="">
|
||
<meta property="og:title" content="Dich'blog">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:url" content="https://blog.dich.bid/learn-docker-3/">
|
||
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:description" content="">
|
||
<meta name="twitter:title" content="Dich'blog">
|
||
<meta property="twitter:domain" content="blog.dich.bid">
|
||
<meta property="twitter:url" content="https://blog.dich.bid/learn-docker-3/">
|
||
|
||
<link rel="alternate" type="application/atom+xml" title="Dich'blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
|
||
|
||
|
||
<link rel="icon" type="image/png" href=/dich.webp />
|
||
|
||
</head>
|
||
|
||
<body class="">
|
||
<div class="container">
|
||
|
||
<header class="header">
|
||
<div class="header__inner">
|
||
<div class="header__logo">
|
||
|
||
<a href="https://blog.dich.bid" style="text-decoration: none;">
|
||
<div class="logo">
|
||
|
||
Dich'blog
|
||
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<nav class="menu">
|
||
<ul class="menu__inner">
|
||
<li class="active"><a href="https://blog.dich.bid">blog</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/tags">tags</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/archive">archive</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/about">about me</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/links">links</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/search">search</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
|
||
|
||
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
</header>
|
||
|
||
|
||
<div class="content">
|
||
|
||
<div class="post">
|
||
|
||
<h1 class="post-title"><a href="https://blog.dich.bid/learn-docker-3/">Docker学习笔记(三)</a></h1>
|
||
<div class="post-meta-inline">
|
||
|
||
<span class="post-date">
|
||
2024-03-27
|
||
</span>
|
||
|
||
</div>
|
||
|
||
|
||
<span class="post-tags-inline">
|
||
:: tags:
|
||
<a class="post-tag" href="https://blog.dich.bid/tags/xue-xi-bi-ji/">#学习笔记</a></span>
|
||
|
||
|
||
<div class="post-content">
|
||
<p>前言 Docker 是一个平台,可简化在轻量级、可移植容器中构建、打包和部署应用程序的过程。在本节中,我们将介绍 Docker 的基础知识、其组件以及入门所需的关键命令。</p>
|
||
<span id="continue-reading"></span><h2 id="ji-chu-zhi-shi"><strong>基础知识</strong></h2>
|
||
<p>Docker 是一个平台,可简化在轻量级、可移植容器中构建、打包和部署应用程序的过程。在本节中,我们将介绍 Docker 的基础知识、其组件以及入门所需的关键命令。</p>
|
||
<h2 id="shen-me-shi-rong-qi"><strong>什么是容器?</strong></h2>
|
||
<p>容器是一个轻量级、独立且可执行的软件包,其中包含运行应用程序所需的所有依赖项(库、二进制文件和配置文件)。容器将应用程序与其环境隔离开来,确保它们在不同系统中一致地工作。</p>
|
||
<h2 id="docker-sheng-tai-xi-tong-zhong-you-san-ge-guan-jian-zu-jian"><strong>Docker 生态系统中有三个关键组件:</strong></h2>
|
||
<ul>
|
||
<li>Dockerfile:包含用于构建 Docker 映像的指令(命令)的文本文件。</li>
|
||
<li>Docker 映像:从 Dockerfile 创建的容器快照。映像存储在注册表(如 Docker Hub)中,可以拉取或推送到注册表。</li>
|
||
<li>Docker 容器:Docker 映像的运行实例。</li>
|
||
</ul>
|
||
<h2 id="an-zhuang-docker"><strong>安装Docker</strong></h2>
|
||
<p><strong>安装基础工具</strong></p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo apt-get update
|
||
</span><span> sudo apt-get install \
|
||
</span><span> apt-transport-https \
|
||
</span><span> ca-certificates \
|
||
</span><span> curl \
|
||
</span><span> gnupg \
|
||
</span><span> lsb-release
|
||
</span></code></pre>
|
||
<p><strong>安装docker的gpg key:</strong></p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||
</span></code></pre>
|
||
<p><strong>安装docker源</strong></p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
</span></code></pre>
|
||
<p>上面命令中的 lsb_release -cs 返回 bullseye ,也就是debian11的代号。</p>
|
||
<p><strong>安装docker</strong></p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>apt-get update
|
||
</span><span>sudo apt-get install docker-ce docker-ce-cli containerd.io
|
||
</span><span>sudo systemctl enable docker
|
||
</span><span>sudo systemctl start docker
|
||
</span></code></pre>
|
||
<p>至此安装完成。</p>
|
||
<p>在debian系的Linux发行版上,docker会开机启动启动。</p>
|
||
<p>如果平时使用非root账户,又不想每次执行docker命令之前都加上sudo,参考docker的 文档 ,可以添加 docker 组,并将非root账户加入到该组中。下面的命令创建 docker 组并将当前用户加入 docker 组,执行完成之后重新登陆生效:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo groupadd docker
|
||
</span><span>sudo usermod -aG docker $USER
|
||
</span></code></pre>
|
||
<p><strong>使用 Docker 存储库安装</strong></p>
|
||
<p>我建议使用此方法的主要原因是您可以轻松升级,因为存储库可以轻松更新!</p>
|
||
<p>首先,使用以下命令安装此方法的先决条件:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo apt update && sudo apt install ca-certificates curl gnupg
|
||
</span></code></pre>
|
||
<p>现在,让我们使用以下命令创建一个目录来存储密钥环:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo install -m 0755 -d /etc/apt/keyrings
|
||
</span></code></pre>
|
||
<p>接下来,使用给定的命令下载 GPG 密钥并将其存储在 /etc/apt/keyrings/etc/apt/keyrings 目录中:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||
</span></code></pre>
|
||
<p>完成后,使用 chmod 命令更改 docker.gpg 文件的权限:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||
</span></code></pre>
|
||
<p>最后,使用以下命令为 Docker 设置存储库:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>echo \
|
||
</span><span> "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||
</span><span> "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||
</span><span> sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
</span></code></pre>
|
||
<p>上述命令中每行末尾的额外 \ 只是添加新行的一种方式,以便您可以轻松查看整个命令。就是这样!</p>
|
||
<p>现在,您可以使用以下命令更新存储库索引并安装 Docker:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo apt update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||
</span></code></pre>
|
||
<p>要验证 Docker 安装,您可以安装 hello-world 映像:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo docker run hello-world
|
||
</span></code></pre>
|
||
<p>hello-world docker 镜像很小,仅用于检查 Docker 是否运行正常。</p>
|
||
<h2 id="shi-yong-docker-er-bu-shi-yong-sudo"><strong>使用 Docker 而不使用 sudo</strong></h2>
|
||
<p>如果您注意到,在运行 hello-world 映像时,我使用了 sudo。</p>
|
||
<p>这可能不太方便。那么如何将其配置为不必使用 sudo 呢?</p>
|
||
<p>首先使用 groupadd 命令创建一个 docker 组:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo groupadd docker
|
||
</span></code></pre>
|
||
<p>现在,将用户添加到组(docker):</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo usermod -aG docker $USER
|
||
</span></code></pre>
|
||
<p>现在从终端注销并重新登录以使更改生效。</p>
|
||
<p>如果您在虚拟机中安装 Docker,需要重新启动才能使您所做的更改生效。</p>
|
||
<p>让我们通过运行 hello-world 图像来测试它:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>docker run hello-world
|
||
</span></code></pre>
|
||
<p>正如您所看到的,我无需使用 sudo 即可获得相同的结果。</p>
|
||
<h2 id="xie-zai-docker"><strong>卸载 Docker</strong></h2>
|
||
<p>首先,使用以下命令停止 docker 服务:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo systemctl stop docker
|
||
</span></code></pre>
|
||
<p>然后按以下方式使用 apt purge 命令从系统中删除 Docker:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||
</span></code></pre>
|
||
<p>如果您打算进行全新安装或者不想拥有任何以前的数据,那么您可以使用 rm 命令删除 Docker 文件:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo rm -rf /var/lib/docker
|
||
</span></code></pre>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo rm -rf /var/lib/containerd
|
||
</span></code></pre>
|
||
<p>就是这样! Docker 已成功删除。</p>
|
||
<h2 id="docker-commands-docker-ming-ling"><strong>Docker Commands Docker 命令</strong></h2>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>docker pull <image>: 从注册表(如 Docker Hub)下载映像。
|
||
</span><span>docker build -t <image_name> <path>: 从 Dockerfile 构建映像,其中 <path> 是包含 Dockerfile 的目录。
|
||
</span><span>docker image ls: 列出本地计算机上可用的所有映像。
|
||
</span><span>docker run -d -p <host_port>:<container_port> --name <container_name> <image>:从映像运行容器,将主机端口映射到容器端口。
|
||
</span><span>docker container ls: 列出所有正在运行的容器。
|
||
</span><span>docker container stop <container>: 停止正在运行的容器。
|
||
</span><span>docker container rm <container>: 移除停止的容器。
|
||
</span><span>docker image rm <image>: 从本地计算机中删除映像。
|
||
</span></code></pre>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="pagination">
|
||
<div class="pagination__title">
|
||
<span class="pagination__title-h">Thanks for reading! Read other posts?</span>
|
||
<hr />
|
||
</div>
|
||
<div class="pagination__buttons">
|
||
<span class="button previous">
|
||
<a href="https://blog.dich.bid/learn-docker-2/">
|
||
<span class="button__icon">←</span>
|
||
<span class="button__text">Docker学习笔记(二)</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
<span class="button next">
|
||
<a href="https://blog.dich.bid/learn-docker-4/">
|
||
<span class="button__text">Docker学习笔记(四)</span>
|
||
<span class="button__icon">→</span>
|
||
</a>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<footer class="footer">
|
||
<div class="footer__inner">
|
||
<div class="copyright">
|
||
<span>©
|
||
2025
|
||
Dichgrem</span>
|
||
<span class="copyright-theme">
|
||
<span class="copyright-theme-sep">:: </span>
|
||
Theme: <a href="https://github.com/pawroman/zola-theme-terminimal/">Terminimal</a> by pawroman
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
</div>
|
||
</body>
|
||
|
||
</html> |