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-plugindocker-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

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

相关推荐
计算机小手14 分钟前
Docker 快速搭建一个基于 GPT-Vis 组件的统计图表生成服务
经验分享·docker·开源软件
谷新龙00128 分钟前
神奇的bug之docker compose启动mysql失败
mysql·docker·bug
筑梦之路1 小时前
ubuntu 22.04设置时区和24小时制显示——筑梦之路
linux·运维·ubuntu
该用户已不存在2 小时前
8个Docker的最佳替代方案,重塑你的开发工作流
前端·后端·docker
(:满天星:)3 小时前
ELK技术栈全面解析与部署方案
linux·运维·服务器·elk·docker·centos
ViatorSun4 小时前
「解析」docker容器起服务,外部访问失败
linux·ubuntu·docker·容器·postman
yang_xiao_wu_4 小时前
docker
docker·容器·eureka
呼啦啦呼啦啦啦啦啦啦5 小时前
修改Docker容器内的时间(实践有效版)
运维·docker·容器
大苏打seven5 小时前
Docker学习笔记:数据卷
笔记·学习·docker