太阳有点大 發表於 2025-6-4 00:00:00

Ubuntu上安装 Docker及可视化管理工具的详细教程

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>一、安装Docker</li><li>2、导入 Docker 官方 GPG 密钥</li><li>3、添加 Docker 仓库&nbsp;</li><li>4、更新软件包列表</li><li>5、安装 Docker</li><li>二、卸载Docker</li><li>三、Docker常用命令</li><li>四、安装Portainer可视化工具</li><li>五、常见问题处理<ul class="second_class_ul"><li>1、非 root 用户运行 Docker 命令&nbsp;</li></ul></li><li>Docker容器运行常用参数详解<ul class="second_class_ul"><li>1、容器运行示例</li><li>2、容器运行参数详解</li><ul class="third_class_ul"><li>2.1、镜像名</li><li>2.2、容器名(--name)&nbsp;</li><li>2.3、端口映射(--publish)</li><li>2.4、目录映射(--volume)&nbsp;</li><li>2.5、重启策略&nbsp;(--restart)</li><li>2.6、运行模式(--detach)&nbsp;</li><li>2.8、环境变量(--env)&nbsp;</li><li>2.9、特权模式(--privileged)</li></ul></ul></li></ul></div><p class="maodian"></p><h2>一、安装Docker</h2>
<p>在 Ubuntu 24.04 LTS 上,虽然可以通过 Ubuntu 的官方仓库直接安装 Docker,但是这种方法通常无法获取到最新的 Docker 版本,而且安全更新也可能延迟。因此,<strong>推荐从 Docker 的仓库进行安装</strong>,确保可以用上最新版本和自动更新。</p>
<p>&nbsp;1、更新软件包并安装必要软件</p>
<div class="dxycode"><pre class="brush:bash;">#更新软件包索引
sudo apt update
#安装添加 Docker 仓库所需的前置软件包
sudo apt install apt-transport-https curl</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="1164" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-2506041152111A.png" width="1200" /></p>
<p class="maodian"></p><h2>2、导入 Docker 官方 GPG 密钥</h2>
<p><strong>由于国内网络限制,Docker官方网站无法被访问,后面采用阿里云的镜像网站为主要源。<br />将https://download.docker.com/linux/ubuntu/ 修改为https://mirrors.aliyun.com/docker-ce/linux/ubuntu/ 即可。</strong></p>
<div class="dxycode"><pre class="brush:bash;">#阿里云镜像源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#官方网站
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="56" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-2506041152114C.png" width="971" /></p>
<p class="maodian"></p><h2>3、添加 Docker 仓库&nbsp;</h2>
<p>添加Docker 的阿里云仓库添加到Ubuntu软件源列表</p>
<div class="dxycode"><pre class="brush:bash;">#添加Docker的阿里云仓库到软件源列表
echo "deb https://mirrors.aliyun.com/docker-ce/linux/ubuntu/ $(. /etc/os-release &amp;&amp; echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
#添加Docker的官方仓库到软件源列表
echo "deb https://download.docker.com/linux/ubuntu $(. /etc/os-release &amp;&amp; echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="123" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115211510.png" width="1133" /></p>
<p class="maodian"></p><h2>4、更新软件包列表</h2>
<div class="dxycode"><pre class="brush:bash;">#刷新软件包列表,以便系统识别新添加的 Docker 仓库
sudo apt update</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="288" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-2506041152123c.png" width="946" /></p>
<p class="maodian"></p><h2>5、安装 Docker</h2>
<div class="dxycode"><pre class="brush:bash;">#安装Docker 引擎及其相关组件
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="979" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115212452.png" width="1200" /></p>
<p>安装的组件包括:</p>
<blockquote><ul><li><strong>docker-ce</strong>:Docker Engine。</li><li><strong>docker-ce-cli</strong>:用于与 Docker 守护进程通信的命令行工具。</li><li><strong>containerd.io</strong>:管理容器生命周期的容器运行时环境。</li><li><strong>docker-buildx-plugin</strong>:增强镜像构建功能的 Docker 扩展工具,特别是在多平台构建方面。</li><li><strong>docker-compose-plugin</strong>:通过单个 YAML 文件管理多容器 Docker 应用的配置管理插件。</li><li><strong>docker-ce-rootless-extras</strong>:用于非 root 用户运行 Docker 容器而提供的一套额外工具集</li></ul></blockquote>
<p>6、检查 Docker 服务状态</p>
<div class="dxycode"><pre class="brush:bash;">#检查 Docker 的运行状态
sudo systemctl is-active docker</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="82" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115212491.png" width="730" /></p>
<p>&nbsp;7、运行测试容器</p>
<div class="dxycode"><pre class="brush:bash;">#运行 hello-world 测试容器,验证 Docker 是否安装成功并正常工作
sudo docker run hello-world</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="683" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115213552.png" width="1052" /></p>
<p>8、替换 DockerHub 镜像源</p>
<p>如果拉取 DockerHub 镜像时遇到困难,可以替换为别的镜像。</p>
<p>8.1、使用文本编辑器打开 Docker 的配置文件,如果没有就新建。</p>
<div class="dxycode"><pre class="brush:bash;">sudo vim /etc/docker/daemon.json</pre></div>
<p>8.2、在配置文件中添加或修改registry-mirrors,指定Docker镜像源的URL</p>
<div class="dxycode"><pre class="brush:json;">{
"registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.aityp.com"
]
}</pre></div>
<p>8.3、保存配置文件并重启 Docker 服务</p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl daemon-reload
sudo systemctl restart docker</pre></div>
<p>8.4、验证配置是否生效</p>
<div class="dxycode"><pre class="brush:bash;">sudo docker info</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="488" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115214P8.png" width="751" /></p>
<p class="maodian"></p><h2>二、卸载Docker</h2>
<p>要从 Ubuntu 24.04 LTS 中卸载 Docker,可以按照以下步骤操作:</p>
<p>1、使用以下命令卸载 Docker 及其相关组件:</p>
<div class="dxycode"><pre class="brush:bash;">sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras</pre></div>
<p>2、执行以下命令来删除 Docker 创建的目录:</p>
<div class="dxycode"><pre class="brush:bash;">sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd</pre></div>
<p>完成这些步骤后,Docker 将完全从你的 Ubuntu 24.04 系统中移除。</p>
<p class="maodian"></p><h2>三、Docker常用命令</h2>
<ul><li>docker run:运行一个新的容器。</li><li>docker ps:列出当前运行的容器。</li><li>docker start:启动一个已经停止的容器</li><li>docker stop:停止一个运行中的容器。</li><li>docker rm:删除一个容器。</li><li>docker images:列出本地镜像。</li><li>docker rmi:删除一个镜像。</li><li>docker exec -it &lt;容器名称&gt; /bin/bash:进入容器内。</li><li>docker logs:查看容器的日志。</li><li>docker inspect:查看容器或镜像的详细信息。</li></ul>
<p class="maodian"></p><h2>四、安装Portainer可视化工具</h2>
<p>1、下载Portainer镜像&nbsp;</p>
<div class="dxycode"><pre class="brush:bash;">sudo docker pull portainer/portainer-ce</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="430" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115214647.png" width="1054" /></p>
<p>2、运行Portainer容器</p>
<div class="dxycode"><pre class="brush:bash;">sudo docker run -d -p 9000:9000 \
--name portainer --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce</pre></div>
<table border="1" cellpadding="1" cellspacing="1"><tbody><tr><td>参数</td><td>参数说明</td></tr><tr><td>-d</td><td>在后台运行容器。</td></tr><tr><td>-p 9000:9000</td><td>将容器的9000端口映射到宿主机的9000端口。</td></tr><tr><td>--name portainer</td><td>为容器指定一个名称为portainer。</td></tr><tr><td>--restart always</td><td>如果容器退出,总是自动重启。</td></tr><tr><td>-v /var/run/docker.sock:/var/run/docker.sock</td><td>将Docker守护进程的Unix套接字挂载到容器中,这允许Portainer直接与Docker守护进程通信。</td></tr><tr><td>-v portainer_data:/data</td><td>创建一个持久化的数据卷,以保存Portainer的配置数据。</td></tr><tr><td>portainer/portainer-ce</td><td>指定要运行的Portainer镜像。</td></tr></tbody></table>
<p>3、查看portainer是否启动</p>
<div class="dxycode"><pre class="brush:bash;">docker ps</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="160" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115214529.png" width="1200" /></p>
<p>4、浏览器登录验证</p>
<p>浏览器访问 ip:9000 即可,初次登陆时需要设置一个admin账号的密码,输入8位密码创建用户,同时勾选下方的允许匿名选项。</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="888" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115215L5.png" width="1200" /></p>
<p>出现如下问题是因为创建用户超时,重启portainer重新创建即可</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="421" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115215636.png" width="1200" /></p>
<div class="dxycode"><pre class="brush:bash;">sudo docker restart portainer</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="83" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115215D0.png" width="712" /></p>
<p>进入portainer页面</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" height="949" src="https://zhuji.jb51.net/uploads/allimg/20250604/2-250604115216345.png" width="1200" /></p>
<p class="maodian"></p><h2>五、常见问题处理</h2>
<p class="maodian"></p><h3>1、非 root 用户运行 Docker 命令&nbsp;</h3>
<p>默认情况下,只有 root 用户或具有 sudo 权限的用户才能够执行 Docker 命令。如果不加<code>sudo</code>前缀直接运行<code>docker</code>命令,系统会报权限错误。</p>
<p>可以运行以下命令将当前登录的用户添加到 docker 组,以便以非 root 用户身份运行 Docker 命令:</p>
<div class="dxycode"><pre class="brush:bash;">sudo usermod -aG docker ${USER}</pre></div>
<p>在这条命令中,<code>${USER}</code>是一个环境变量,表示当前登录的用户名。执行完这条命令后,需要重启 Ubuntu 系统。重启之后,就可以不需要加<code>sudo</code>前缀来执行&nbsp;<code>docker</code>&nbsp;命令了。</p>
<p class="maodian"></p><h2>Docker容器运行常用参数详解</h2>
<p class="maodian"></p><h3>1、容器运行示例</h3>
<p>在Docker中运行一个容器需要使用<code>docker run</code>命令,这个命令后面可以跟很多参数来定制容器的行为。以下是一个运行容器示例以及参数详解。</p>
<div class="dxycode"><pre class="brush:bash;">docker run
-d
--name my-container
-p 8080:80
-v /host/data:/container/data
--restart=always
--env MY_VAR=value
--network bridge
my-image</pre></div>
<blockquote><ul><li>-d:后台运行容器,并返回容器ID;</li><li>--name:为容器指定一个名称;</li><li>-p:指定端口映射,格式为:主机端口:容器端口;</li><li>-v:挂载一个目录或文件;</li><li>--restart:设置容器重启策略,如 always、on-failure等;</li><li>--env:设置环境变量;</li><li>--network:连接容器到一个网络。&nbsp;</li></ul></blockquote>
<p class="maodian"></p><h3>2、容器运行参数详解</h3>
<p class="maodian"></p><h4>2.1、镜像名</h4>
<p>镜像是 Docker 的核心概念之一,用于创建 Docker 容器。镜像可以从镜像仓库中拉取。运行容器时,必须指定镜像名。</p>
<div class="dxycode"><pre class="brush:bash;"># 运行 Nginx 镜像
docker run nginx:1.19</pre></div>
<p>指定特定版本(标签)的nginx镜像,1.19是版本号;如果不指定版本,Docker 会默认拉取 latest 标签的镜像。</p>
<p>注:latest标签,由于它的字面意思是&ldquo;最新的&rdquo;,所以很多时候也容易被误解,其实latest就是个普通标签,不要期望它是最新或最稳定的版本,因为它取决于当时 lastest 标签被关联到的版本。镜像的维护者可能会使用不同的标签策略,因此在生产环境中最好明确指定具体的版本号。它只是个名字,也没有其它附加作用,更不会自动更新。</p>
<p class="maodian"></p><h4>2.2、容器名(--name)&nbsp;</h4>
<p>每个运行的容器都有一个唯一的 ID,但为了方便管理,你可以为容器指定一个易于记忆的名称。这样,在后续操作时,可以直接使用容器名称,而不是容器 ID。&nbsp;</p>
<div class="dxycode"><pre class="brush:bash;"># 容器命名为 my-nginx
docker run --name my-nginx nginx</pre></div>
<p class="maodian"></p><h4>2.3、端口映射(--publish)</h4>
<p>端口映射可以通过在运行命令中使用 -p 选项(p小写,全称 --publish)来完成,该选项的语法如下:&nbsp;-p &lt;主机端口&gt;:&lt;容器端口&gt;。端口映射用于将容器内部的端口映射到宿主机的端口,使得外部可以访问容器内运行的服务。&nbsp;</p>
<div class="dxycode"><pre class="brush:bash;"># 将容器的 8080 端口映射到宿主机的 80 端口
docker run -d -p 80:8080 tomcat</pre></div>
<p class="maodian"></p><h4>2.4、目录映射(--volume)&nbsp;</h4>
<p>端口映射可以通过在运行命令中使用 -v&nbsp;选项(全称 --volume)来完成,该选项的语法如下:&nbsp;-v &lt;主机目录&gt;:&lt;容器目录&gt;。目录映射用于将宿主机的目录挂载到容器内,保留容器中的数据,以便数据可以在宿主机和容器之间共享。</p>
<div class="dxycode"><pre class="brush:bash;"># 将宿主机的 /data 目录挂载到容器的 /app 目录
docker run -d -v /data:/app tomcat</pre></div>
<p class="maodian"></p><h4>2.5、重启策略&nbsp;(--restart)</h4>
<p>容器的重启策略是指在容器退出时Docker是否应该自动重启容器。目的是为了确保容器应用的高可用性和稳定性,通过设置重启策略,可以在容器出现故障或异常情况时自动重新启动容器,以避免影响业务运行。</p>
<div class="dxycode"><pre class="brush:bash;"># 设置容器在退出时总是重启
docker run -d --restart always tomcat</pre></div>
<p>重启策略有以下几种:</p>
<ul><li>no:不自动重启。</li><li>on-failure:容器因错误退出(非零退出代码)时重启。可选的重启次数可以通过--restart-max-retries设置。</li><li>always:无论退出状态如何,总是重启容器。</li><li>unless-stopped:容器除非被手动停止,否则总是重启。</li></ul>
<p class="maodian"></p><h4>2.6、运行模式(--detach)&nbsp;</h4>
<p>在Docker中,-d(全称 --detach)&nbsp;选项用于启动一个分离模式的容器,这意味着容器会在后台运行,不会占用当前的终端会话。&nbsp;</p>
<div class="dxycode"><pre class="brush:bash;"># 后台运行容器
docker run -d tomcat</pre></div>
<p>Docker 提供了多种网络模式,适应不同的网络需求。 常见的网络模式有:</p>
<ul><li>bridge: 默认模式,Docker 创建一个独立的网络桥接器(bridge),容器通过此桥接器与宿主机和其他容器通信。</li><li>host: 容器直接使用宿主机的网络栈,与宿主机共享网络接口。</li><li>none: 容器没有网络连接,完全隔离。</li><li>container:: 容器与指定的其他容器共享网络栈。</li></ul>
<div class="dxycode"><pre class="brush:bash;"># 以桥接网络模式运行容器
docker run -d --network bridge tomcat</pre></div>
<p class="maodian"></p><h4>2.8、环境变量(--env)&nbsp;</h4>
<p>在 Docker 中,-e(全称 --env)选项用于设置环境变量。环境变量用于向容器传递运行时所需的配置信息。</p>
<div class="dxycode"><pre class="brush:bash;"># 向容器传递一个环境变量 ENV,其值为 production
docker run -d -e "ENV=production" tomcat</pre></div>
<p class="maodian"></p><h4>2.9、特权模式(--privileged)</h4>
<p>在Docker中,--privileged=true选项允许容器以特权模式(超级用户权限)运行,从而获得几乎与主机相同的权限。这意味着容器可以访问和控制主机的所有硬件设备、操作系统内核和其他系统资源。</p>
<div class="dxycode"><pre class="brush:bash;"># 赋予容器特权模式
docker run --privileged -d tomcat</pre></div>
<p>以上就是Ubuntu上安装 Docker及可视化管理工具的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Ubuntu上安装 Docker及可视化管理工具的详细教程