63人参与 • 2024-08-06 • Docker
本文档详细记录了在 ubuntu server 22.04 上安装 docker 的完整过程,包括解决过程中遇到的问题。希望能对读者有所帮助。
安装过程,重点需要看官方文档。https://docs.docker.com/engine/install/ubuntu/
在安装 docker engine 之前,您需要卸载所有有冲突的软件包。发行版维护者在 apt 中提供了 docker 软件包的非官方发行版。您必须先卸载这些软件包,然后才能安装 docker engine 的正式版本。
要卸载的非官方软件包包括:
此外,docker engine 依赖于 containerd
和 runc
。docker engine 将这些依赖项捆绑为一个包:containerd.io
。如果您之前安装了 containerd
或 runc
,请卸载它们以避免与 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 部分。
首先,更新系统中的现有软件包:
sudo apt update
安装必要的依赖包,这些包用于通过 https 获取软件仓库:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
为了确保下载的 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
背景知识:gpg 密钥用于验证软件包的完整性和真实性,确保下载的软件包没有被篡改。
我们使用中科大的镜像源来加快下载速度:
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 的中科大镜像源可以加快下载速度,并提高可靠性。
添加新的 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
文件中的镜像源地址是否正确,并确认中科大镜像源可用。背景知识:更新软件包索引是为了让系统知道最新的软件包信息,包括新添加的软件源中的包。
安装 docker 及其依赖包:
sudo apt install docker-ce docker-ce-cli containerd.io
安装失败:
e: unable to locate package docker-ce
背景知识:docker 是一个开源的平台,用于开发、交付和运行应用程序。它将应用程序及其依赖项打包到一个标准化的单元中,称为容器。
由于国内访问 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
背景知识:镜像加速器可以提高从 docker hub 拉取镜像的速度,特别是在国内网络环境下。
使配置生效,重新启动 docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
运行一个简单的 docker 容器来验证安装是否成功:
sudo docker run hello-world
无法访问 docker hub:
denied: requested access to the resource is denied unauthorized: authentication required
sudo docker login
按照提示输入 docker hub 用户名和密码即可。
网络连接问题:
dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: no such host
背景知识:hello-world
镜像是一个非常小的镜像,用于验证 docker 是否正常工作。
你可以使用以下命令实时查看 docker 服务的日志:
sudo journalctl -u docker.service -f
这个命令的作用是:
sudo
:以超级用户权限运行命令。journalctl
:查看系统日志的命令。-u docker.service
:指定查看 docker 服务的日志。-f
:实时查看日志输出,类似于 tail -f
。通过上述步骤,我成功在 ubuntu server 22.04 上安装并配置了 docker。主要就是镜像地址问题,通过调整配置文件和更换镜像源,我顺利解决了这些问题。希望你也一样。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论