在Ubuntu服务器上安装Docker(支持Ubuntu 20.04/22.04等版本):

1. 卸载旧版本(如有)

如果系统曾安装过旧版Docker,先清理残留:

sudo apt remove docker docker-engine docker.io containerd runc

2. 添加Docker官方仓库

安装依赖工具

sudo apt update
sudo apt install -y ca-certificates curl gnupg

添加Docker的GPG密钥

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

添加APT仓库

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3. 安装Docker引擎

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 验证安装

检查Docker版本并运行测试容器:

sudo docker --version
sudo docker run hello-world  # 若输出"Hello from Docker!"则成功

5. 配置非root用户权限(可选)

允许当前用户无需sudo执行Docker命令:

sudo usermod -aG docker $USER
newgrp docker  # 刷新用户组(或重新登录)

验证:

docker run hello-world  # 无需sudo

6. 配置镜像加速器(国内用户推荐)

修改Docker配置文件/etc/docker/daemon.json,添加镜像加速地址(如阿里云):

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://your-mirror-id.mirror.aliyuncs.com"]
}
EOF

重启Docker生效:

sudo systemctl restart docker

7. 管理Docker服务

启动/停止Docker服务:

sudo systemctl start docker   # 启动
sudo systemctl stop docker    # 停止
sudo systemctl enable docker  # 设置开机自启

8. 安装Docker Compose(可选)

若需使用Compose管理多容器:

sudo apt install docker-compose-plugin
docker compose version  # 验证

常见问题 权限拒绝错误:未将用户加入docker组时,运行docker命令需加sudo。

镜像拉取失败:检查网络或配置镜像加速器。

端口冲突:若Docker容器端口被占用,通过docker ps检查运行中的容器。

<think>好的,我现在需要解决用户遇到的Docker仓库未签名的问题,错误信息是'E: The repository 'https://download.docker.com/linux/ubuntu jammy InRelease' is not signed.'。首先,我应该回忆一下类似的问题和解决方法。根据用户提供的引用,特别是引用[3]和[4],这个问题通常是因为缺少公钥或者软件源配置不正确导致的。 首先,用户可能没有正确添加Docker的GPG密钥。APT在更新软件源列表时会验证签名,如果缺少对应的公钥,就会报错。所以第一步应该是尝试导入Docker的官方GPG密钥。根据引用[3]中的解决方法,可能需要使用命令`sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7EA0A9C3F273FCD8`来导入密钥,但需要确认这个密钥是否适用于jammy版本。 接下来,检查软件源配置是否正确。用户提到他们的Ubuntu版本是jammy(22.04),但可能在sources.list文件中配置的仓库还是针对其他版本,比如focal(20.04)或eoan(19.10)。这时候需要用户用文本编辑器打开/etc/apt/sources.list或/etc/apt/sources.list.d/docker.list文件,确认仓库URL中的发行版代号是否正确。例如,应该使用`jammy`而不是`focal`或`eoan`。修改后保存并运行`sudo apt update`更新列表。 如果更新后问题仍然存在,可能需要手动下载并安装公钥。例如,使用wget下载密钥文件,然后用`apt-key add`添加。此外,用户可能需要确保Docker的仓库配置正确,比如使用正确的组件(如stable、test等),以及正确的架构(arch=amd64)。 还有一种可能是网络问题导致无法连接到Docker仓库,这时候需要检查网络连接,或者尝试更换镜像源。不过根据错误信息,问题主要是签名验证失败,所以更可能和密钥或仓库配置有关。 另外,参考引用[4]中提到,有时候软件源的路径可能不正确,或者仓库没有正确签名,这时候可能需要注释掉有问题的仓库行,或者更换为正确的仓库地址。例如,用户可能错误地使用了不支持的发行版代号,导致仓库无法提供签名的InRelease文件。 总结步骤应该是:1. 检查并修正软件源中的发行版代号;2. 导入正确的GPG密钥;3. 更新软件列表并重新安装。如果这些步骤无效,可能需要进一步检查网络或仓库状态。</think>### 分步解决Docker仓库未签名错误 #### 1. 验证软件源配置 **问题根源**:APT软件源配置中指定的Ubuntu版本代号与当前系统不匹配(例如系统为`jammy`但源中仍使用`focal`)。 **解决方法**: - 打开Docker软件源配置文件: ```bash sudo nano /etc/apt/sources.list.d/docker.list ``` - 检查并修改仓库行中的版本代号为`jammy`: ```bash deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable ``` 保存并退出(`Ctrl+O` → `Enter` → `Ctrl+X`)[^3]。 #### 2. 添加缺失的GPG公钥 **问题根源**:缺少Docker仓库的公钥,导致APT无法验证签名。 **解决方法**: - 通过`curl`下载并导入公钥: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` - 或手动添加密钥服务器中的公钥(密钥ID需与错误提示中的`NO_PUBKEY`一致,例如`7EA0A9C3F273FCD8`): ```bash sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7EA0A9C3F273FCD8 ``` #### 3. 更新软件列表并重试安装 ```bash sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io ``` #### 4. 其他可能情况 - **网络问题**:确保能正常访问`https://download.docker.com`,必要时检查代理或防火墙设置。 - **仓库状态异常**:访问[Docker官方文档](https://docs.docker.com/engine/install/ubuntu/)确认仓库状态。 ### 相关问题 1. **如何检查Ubuntu系统的版本代号?** 答:执行`lsb_release -cs`,输出结果为`jammy`、`focal`等。 2. **如何彻底移除旧Docker配置?** 答:使用`sudo apt purge docker-ce`并删除`/etc/apt/sources.list.d/docker.list`文件。 3. **为什么需要GPG密钥验证软件源?** 答:防止中间人攻击或篡改软件包,确保来源可信[^4]。 [^1]: 关于APT签名验证机制的说明 : Docker软件源配置修正方法 : 软件源未签名错误的原理分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发小能手-roy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值