Ubuntu24.04安装Docker过程记录

一. 问题引入

我之前选择的云服务器的系统镜像都是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密钥

鉴于网络问题,我们将手动下载密钥,并采用新的方式安装。

  1. 创建存储密钥的目录(如果目录不存在):

    bash

    bash 复制代码
    sudo mkdir -p /etc/apt/keyrings
  2. 手动下载Docker的GPG密钥

    你可以尝试直接用浏览器访问 https://download.docker.com/linux/ubuntu/gpg 来下载密钥文件。如果浏览器也无法访问,可能需要检查网络连接或临时使用代理。

    如果命令行工具curl可用,但连接官方地址不稳定,可以使用国内镜像源。例如,使用阿里云的镜像:

    bash

    bash 复制代码
    sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

    这里使用了阿里云的Docker CE镜像源来获取GPG密钥,通常在国内的访问速度会更稳定

  3. 验证密钥文件

    下载完成后,确保密钥文件不为空。你可以使用 ls -l /etc/apt/keyrings/docker.asc 命令查看文件大小。

第2步:添加使用新密钥的Docker软件源

现在,我们来添加Docker的软件源,并在源中明确指定刚才下载的密钥文件。

  1. 添加软件源

    同样,为了获得更快的下载速度,我们继续使用阿里云的镜像来添加软件源。

    bash

    bash 复制代码
    echo "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
    • [arch=$(dpkg --print-architecture):自动检测当前系统架构(如amd64, arm64等)。
    • signed-by=/etc/apt/keyrings/docker.asc:明确指定用于验证此软件源的GPG密钥文件路径
    • https://mirrors.aliyun.com/docker-ce/linux/ubuntu:使用阿里云提供的Docker CE镜像源
    • $(lsb_release -cs):自动获取当前Ubuntu系统的代号(例如,Jammy、Focal等)。
第3步:安装Docker CE

软件源配置完成后,就可以安装Docker了。

  1. 更新软件包列表

    bash

    sql 复制代码
    sudo apt update

    这个命令会读取新添加的Docker软件源。

  2. 安装Docker CE

    bash

    lua 复制代码
    sudo apt install docker-ce docker-ce-cli containerd.io
  3. 验证安装

    安装完成后,可以运行一个测试容器来验证Docker是否安装成功:

    bash

    css 复制代码
    sudo docker --version

💡 其他网络问题应对策略

1. 下载GPG密钥失败

如果在手动下载GPG密钥这一步仍然遇到网络问题,可以尝试以下方法:

  • 检查网络连接 :使用 ping mirrors.aliyun.com 测试到镜像源的网络连通性。
  • 调整curl参数 :尝试给curl命令增加 --retry 3 参数,让它在失败时自动重试几次
  • 使用更友好的网络环境:如果你处在受限制的网络中(如公司内网),可能需要配置代理或联系网络管理员。

2. 拉取镜像失败

因为连接国外官方镜像仓库失败,可用配置国内镜像仓库。

linux修改方法
  1. 修改/etc/docker/daemon.json文件,添加镜像仓库配置
json 复制代码
{
  "registry-mirrors": ["https://docker.xuanyuan.me"]
}
  1. 重新加载配置并重启 Docker 服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker

  2. 查看Registry Mirrors是否已更新

perl 复制代码
docker info | grep -A 10 "Registry Mirrors"
windows修改方法

Windows平台上,可用通过Docker Desktop来进行修改。

  1. 打开Docker Desktop
  2. 点击右上角的设置按钮(齿轮ICON)
  3. 左侧菜单点击Docker Engine
  4. 修改daemon.json文件,添加镜像仓库配置,修改配置内容与Linux一致
  5. 点击Apply,重启Docker Desktop
  6. 打开cmd或者powershell通过指令查看Registry Mirrors是否已更新(与Linux一致)

目前经验证不可用的镜像:

目前经验证可用的镜像:

  1. 阿里云镜像加速器

需要注册并获取专属地址,且仅在阿里云服务器内可用

镜像地址:https://<你的ID>.mirror.aliyuncs.com

  1. 腾讯云镜像加速器 仅在腾讯云服务器可用 镜像地址: https://mirror.ccs.tencentyun.com

  2. 轩辕镜像 分免费版与专业版 免费版: docker.xuanyuan.me 专业版: xuanyuan.cloud

不建议使用,免费版拉取时会报错403 Forbidden,专业版需要收费,且镜像源非官方非大厂或可靠机构,安全性存疑

最终解决方案:

使用梯子,下载官方镜像

相关推荐
冷血~多好3 小时前
使用docker部署elk,实现日志追踪
elk·docker·容器
天一生水water4 小时前
docker-compose安装
运维·docker·容器
蓝象_5 小时前
docker安装配置mysql
mysql·docker·容器
一叶知秋yyds6 小时前
Centos 安装 Docker教程
linux·docker·centos
return(b,a%b);6 小时前
docker拉取失败,更换docker的源
docker·容器·eureka
IT小哥哥呀7 小时前
Jenkins + Docker 打造自动化持续部署流水线
docker·微服务·自动化·jenkins·springboot·高并发·限流
时鲟、时倾7 小时前
docker部署kafka
docker·容器·kafka
byte轻骑兵7 小时前
WSL+openEuler云原生实践:Docker全流程部署与多容器编排深度评测
docker·云原生·容器·openeuler
Knight_AL10 小时前
Docker 加载镜像时报 no space left on device 的彻底解决方案
docker·容器·eureka