一. 问题引入
我之前选择的云服务器的系统镜像都是Ubuntu22.04,也记录了相应的安装Dcoker的详细过程及遇到的问题。
但是在最近购买的云服务器中,我想试下最新的Ununtu24.04,在复用Ubuntu22.04的安装教程中,就出现了问题。 在多番试错之后重新安装成功,在此将新的安装过程整理出来,以备后面复用。
二. 安装报错
1. 下载dcoker密钥失败
问题描述:
ubuntu24.04 安装docker过程中,执行curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -指令报错:
vbnet
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
curl: (35) Recv failure: Connection reset by peer
gpg: no valid OpenPGP data found.
原因分析:
由于旧的apt-key命令已被弃用,并且在下载DPG密钥时出现了网络连接问题。
解决方案:
理解问题与调整方法
apt-key已弃用 :自Ubuntu 22.04及以后的版本,apt-key命令已被弃用。继续使用它会看到警告,但关键是要采用新的方法来管理APT密钥。- 新的密钥管理方式 :现在推荐将GPG密钥单独存放在
/etc/apt/keyrings或/usr/share/keyrings/目录下,并在配置软件源时,通过signed-by选项直接指向这个密钥文件。 - 网络连接问题 :
curl: (35) Recv failure: Connection reset by peer这个错误通常是由于网络连接不稳定,或者服务器端问题导致的。对于国内用户,直接从Docker官方下载源获取资源速度可能较慢或不稳定。
安装过程
第1步: 手动下载并安装Docker的GPG密钥
鉴于网络问题,我们将手动下载密钥,并采用新的方式安装。
-
创建存储密钥的目录(如果目录不存在):
bash
bashsudo mkdir -p /etc/apt/keyrings -
手动下载Docker的GPG密钥 :
你可以尝试直接用浏览器访问
https://download.docker.com/linux/ubuntu/gpg来下载密钥文件。如果浏览器也无法访问,可能需要检查网络连接或临时使用代理。如果命令行工具
curl可用,但连接官方地址不稳定,可以使用国内镜像源。例如,使用阿里云的镜像:bash
bashsudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc -
验证密钥文件 :
下载完成后,确保密钥文件不为空。你可以使用
ls -l /etc/apt/keyrings/docker.asc命令查看文件大小。
第2步:添加使用新密钥的Docker软件源
现在,我们来添加Docker的软件源,并在源中明确指定刚才下载的密钥文件。
-
添加软件源 :
同样,为了获得更快的下载速度,我们继续使用阿里云的镜像来添加软件源。
bash
bashecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
第3步:安装Docker CE
软件源配置完成后,就可以安装Docker了。
-
更新软件包列表:
bash
sqlsudo apt update这个命令会读取新添加的Docker软件源。
-
安装Docker CE:
bash
luasudo apt install docker-ce docker-ce-cli containerd.io -
验证安装 :
安装完成后,可以运行一个测试容器来验证Docker是否安装成功:
bash
csssudo docker --version
💡 其他网络问题应对策略
1. 下载GPG密钥失败
如果在手动下载GPG密钥这一步仍然遇到网络问题,可以尝试以下方法:
- 检查网络连接 :使用
ping mirrors.aliyun.com测试到镜像源的网络连通性。 - 调整curl参数 :尝试给curl命令增加
--retry 3参数,让它在失败时自动重试几次。 - 使用更友好的网络环境:如果你处在受限制的网络中(如公司内网),可能需要配置代理或联系网络管理员。
2. 拉取镜像失败
因为连接国外官方镜像仓库失败,可用配置国内镜像仓库。
linux修改方法
- 修改/etc/docker/daemon.json文件,添加镜像仓库配置
json
{
"registry-mirrors": ["https://docker.xuanyuan.me"]
}
-
重新加载配置并重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker -
查看Registry Mirrors是否已更新
perl
docker info | grep -A 10 "Registry Mirrors"
windows修改方法
Windows平台上,可用通过Docker Desktop来进行修改。
- 打开Docker Desktop
- 点击右上角的设置按钮(齿轮ICON)
- 左侧菜单点击Docker Engine
- 修改daemon.json文件,添加镜像仓库配置,修改配置内容与Linux一致
- 点击Apply,重启Docker Desktop
- 打开cmd或者powershell通过指令查看Registry Mirrors是否已更新(与Linux一致)
目前经验证不可用的镜像:
- 中国科学技术大学镜像源: docker.mirrors.ustc.edu.cn
- 网易镜像源:hub-mirror.c.163.com
- Docker中文社区镜像源:registry.docker-cn.com
目前经验证可用的镜像:
- 阿里云镜像加速器
需要注册并获取专属地址,且仅在阿里云服务器内可用
镜像地址:https://<你的ID>.mirror.aliyuncs.com
-
腾讯云镜像加速器 仅在腾讯云服务器可用 镜像地址:
https://mirror.ccs.tencentyun.com -
轩辕镜像 分免费版与专业版 免费版: docker.xuanyuan.me 专业版: xuanyuan.cloud
不建议使用,免费版拉取时会报错403 Forbidden,专业版需要收费,且镜像源非官方非大厂或可靠机构,安全性存疑
最终解决方案:
使用梯子,下载官方镜像