Ubuntu:20.04中安装docker

是的,您列出的命令是完整的安装步骤,但为了确保100%可靠性和处理可能的问题,我建议进行以下优化和补充:

完整优化的安装脚本(包含错误处理和验证)

bash 复制代码
#!/bin/bash

# 1. 彻底清理旧版本和配置
sudo apt remove -y docker docker-engine docker.io containerd runc
sudo apt purge -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm -f /etc/apt/sources.list.d/docker*.list

# 2. 安装必要依赖
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 3. 添加阿里云Docker镜像源
echo "添加阿里云镜像源..."
sudo tee /etc/apt/sources.list.d/docker-aliyun.list <<-'EOF'
deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
EOF

# 4. 添加GPG密钥(使用apt-key替代方案)
echo "添加GPG密钥..."
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker-aliyun.list > /dev/null

# 5. 更新源(增加重试机制)
echo "更新软件源..."
for i in {1..3}; do
    sudo apt update && break
    echo "APT更新失败,重试 ($i/3)..."
    sleep 2
done

# 6. 安装Docker(指定稳定版本)
echo "安装Docker组件..."
sudo apt install -y \
    docker-ce=5:24.0.7-1~ubuntu.20.04~focal \
    docker-ce-cli=5:24.0.7-1~ubuntu.20.04~focal \
    containerd.io=1.6.31-1 \
    docker-buildx-plugin=0.11.2-1~ubuntu.20.04~focal \
    docker-compose-plugin=2.23.3-1~ubuntu.20.04~focal

# 7. 配置和启动服务
echo "配置Docker服务..."
sudo systemctl enable docker
sudo systemctl start docker

# 8. 验证安装
echo "验证安装..."
sudo docker --version
sudo docker run --rm hello-world

# 9. 用户权限配置
echo "配置用户权限..."
sudo usermod -aG docker $USER
echo "请执行以下命令使组权限生效:"
echo "  newgrp docker"
echo "或重新登录系统"

关键优化说明:

  1. 彻底清理:

    • 增加了旧版本组件的清理(docker-engine, docker.io, runc)
    • 删除遗留配置目录(/var/lib/containerd)
  2. 密钥处理优化:

    • 使用更安全的gpg --dearmor替代过时的apt-key add
    • 将密钥存储在/usr/share/keyrings(现代Linux标准)
  3. 安装稳定性增强:

    • 添加APT更新重试机制(应对网络波动)
    • 指定版本安装避免最新版兼容性问题
    bash 复制代码
    docker-ce=5:24.0.7-1~ubuntu.20.04~focal
    containerd.io=1.6.31-1  # 使用经过验证的稳定版本
  4. 完整组件安装:

    • 明确包含docker-buildx-plugin和docker-compose-plugin
    • 避免依赖缺失问题
  5. 验证步骤:

    • 添加版本检查(docker --version)
    • 运行hello-world容器确认核心功能

使用说明:

  1. 将脚本保存为install_docker.sh

  2. 赋予执行权限:

    bash 复制代码
    chmod +x install_docker.sh
  3. 执行安装:

    bash 复制代码
    ./install_docker.sh

安装后推荐配置:

bash 复制代码
# 配置阿里云镜像加速器(替换<your-id>)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker

# 检查配置
docker info | grep Registry

注意 :从阿里云容器镜像服务控制台获取专属加速器地址(免费),替换<your-id>

特殊问题处理:

如果仍遇到包下载问题,手动下载安装:

bash 复制代码
# 获取阿里云下载地址
PKG_URL="https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64"

# 下载核心包
wget ${PKG_URL}/containerd.io_1.6.31-1_amd64.deb
wget ${PKG_URL}/docker-ce_24.0.7-1~ubuntu.20.04~focal_amd64.deb
wget ${PKG_URL}/docker-ce-cli_24.0.7-1~ubuntu.20.04~focal_amd64.deb

# 安装
sudo dpkg -i containerd.io*.deb
sudo dpkg -i docker-ce-cli*.deb
sudo dpkg -i docker-ce*.deb

这个优化方案解决了原始命令可能存在的密钥存储问题、版本兼容性问题,并增加了网络波动的容错处理,特别适合国内服务器环境。

相关推荐
csdn_aspnet11 分钟前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
对象存储与RustFS1 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
江湖有缘4 小时前
基于Ubuntu部署SoduWork:企业级 AI 原生协同平台实战全流程
linux·人工智能·ubuntu·ai·soduwork
java_logo18 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb19 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
打工仔折腾 AI1 天前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
xbzb1 天前
自建镜像仓库:registry 一条命令 + harbor 部署、授权、跨库同步与卸载
docker·harbor·镜像·仓库·同步·registry
瓦瓦gogo2 天前
从一个 TypeScript 函数开始理解 MCP 协议
linux·ubuntu·typescript
鱼听禅2 天前
Ubuntu安装YOLOv8进行菌落识别训练
linux·python·yolo·ubuntu
wz97542 天前
Docker 从 systemd 托管容器、overlay2 存储驱动到 Compose 多容器实战
spring cloud·docker·eureka