在 Ubuntu Server 22.04 上安装 Docker 的详细步骤

红色标记 2024-08-07 14:37:01 阅读 74

在 Ubuntu Server 22.04 上安装 Docker 的详细步骤

本文档详细记录了在 Ubuntu Server 22.04 上安装 Docker 的完整过程,包括解决过程中遇到的问题。希望能对读者有所帮助。

安装过程,重点需要看官方文档。https://docs.docker.com/engine/install/ubuntu/

目录

卸载冲突的软件包更新系统软件包安装依赖包添加 Docker 中科大 GPG 密钥添加 Docker 中科大镜像稳定版软件源再次更新软件包安装最新版本的 Docker配置 Docker 使用镜像加速器(hub)重新启动 Docker 服务验证 Docker 安装实时查看 Docker 服务日志附加资源总结

步骤 1:卸载冲突的软件包

在安装 Docker Engine 之前,您需要卸载所有有冲突的软件包。发行版维护者在 APT 中提供了 Docker 软件包的非官方发行版。您必须先卸载这些软件包,然后才能安装 Docker Engine 的正式版本。

要卸载的非官方软件包包括:

docker.iodocker-composedocker-compose-v2docker-docpodman-docker

此外,Docker Engine 依赖于 <code>containerd 和 runcDocker Engine 将这些依赖项捆绑为一个包:containerd.io。如果您之前安装了 containerdrunc,请卸载它们以避免与 Docker Engine 捆绑的版本发生冲突。

运行以下命令来卸载所有冲突的包:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会报告您没有安装这些包。

注意:卸载 Docker 时,不会自动删除存储在 /var/lib/docker/ 中的图像、容器、卷和网络。如果您想从全新安装开始,并且希望清理所有现有数据,请阅读 卸载 Docker Engine 部分。

步骤 2:更新系统软件包

首先,更新系统中的现有软件包:

sudo apt update

步骤 3:安装依赖包

安装必要的依赖包,这些包用于通过 HTTPS 获取软件仓库:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

步骤 4:添加 Docker 中科大 GPG 密钥

为了确保下载的 Docker 软件包的真实性和完整性,我们需要添加 Docker 的 GPG 密钥:

sudo mkdir -p /etc/apt/keyrings

sudo curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

可能的问题

无法下载 GPG 密钥

错误信息curl: (6) Could not resolve host: mirrors.ustc.edu.cn解决方案:在网上搜索其他镜像站点。参考连接:https://blog.csdn.net/m0_46471328/article/details/138043873

背景知识:GPG 密钥用于验证软件包的完整性和真实性,确保下载的软件包没有被篡改。

步骤 5:添加 Docker 中科大镜像稳定版软件源

我们使用中科大的镜像源来加快下载速度:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

可能的问题

镜像源添加失败

错误信息bash: /etc/apt/sources.list.d/docker.list: Permission denied解决方案:确保使用 sudo 运行命令以获得必要的权限。

背景知识:软件源是存储软件包的服务器地址,添加 Docker 的中科大镜像源可以加快下载速度,并提高可靠性。

步骤 6:再次更新软件包

添加新的 Docker 软件源后,再次更新系统中的软件包索引:

sudo apt update

可能的问题

更新失败

错误信息Failed to fetch http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages 404 Not Found解决方案:检查 sources.list.d/docker.list 文件中的镜像源地址是否正确,并确认中科大镜像源可用。

背景知识:更新软件包索引是为了让系统知道最新的软件包信息,包括新添加的软件源中的包。

步骤 7:安装最新版本的 Docker

安装 Docker 及其依赖包:

sudo apt install docker-ce docker-ce-cli containerd.io

可能的问题

安装失败

错误信息E: Unable to locate package docker-ce解决方案:确保之前步骤中的镜像源已正确添加并更新了软件包索引。

背景知识:Docker 是一个开源的平台,用于开发、交付和运行应用程序。它将应用程序及其依赖项打包到一个标准化的单元中,称为容器。

步骤 8:配置 Docker 使用镜像加速器(hub)

由于国内访问 Docker Hub 可能会有速度和连接问题,我们配置 Docker 使用腾讯云的镜像加速器:

sudo mkdir -p /etc/docker

echo '{

"registry-mirrors": ["https://ccr.ccs.tencentyun.com"]

}' | sudo tee /etc/docker/daemon.json > /dev/null

可能的问题

无法访问镜像加速器

错误信息dial tcp: lookup ccr.ccs.tencentyun.com on 127.0.0.53:53: no such host解决方案:确保配置的镜像加速器地址正确并可访问,可能需要更换其他地址。地址 127.0.0.53:53 是一个本地 DNS 缓存服务,通常是由系统的 systemd-resolved 服务提供的。

背景知识:镜像加速器可以提高从 Docker Hub 拉取镜像的速度,特别是在国内网络环境下。

步骤 9:重新启动 Docker 服务

使配置生效,重新启动 Docker 服务:

sudo systemctl daemon-reload

sudo systemctl restart docker

步骤 10:验证 Docker 安装

运行一个简单的 Docker 容器来验证安装是否成功:

sudo docker run hello-world

可能的问题

无法访问 Docker Hub

错误信息denied: requested access to the resource is denied unauthorized: authentication required解决方案:通过以下命令登录 Docker Hub:

sudo docker login

按照提示输入 Docker Hub 用户名和密码即可。

网络连接问题

错误信息dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: no such host解决方案:配置镜像加速器并重启 Docker 服务后,再次尝试拉取镜像。

背景知识hello-world 镜像是一个非常小的镜像,用于验证 Docker 是否正常工作。

实时查看 Docker 服务日志

你可以使用以下命令实时查看 Docker 服务的日志:

sudo journalctl -u docker.service -f

这个命令的作用是:

sudo:以超级用户权限运行命令。journalctl:查看系统日志的命令。-u docker.service:指定查看 Docker 服务的日志。-f:实时查看日志输出,类似于 tail -f

附加资源

Docker 官方文档Docker HubDocker 入门指南Docker 社区支持

总结

通过上述步骤,我成功在 Ubuntu Server 22.04 上安装并配置了 Docker。主要就是镜像地址问题,通过调整配置文件和更换镜像源,我顺利解决了这些问题。希望你也一样。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。