首先更新系统包并安装必要的依赖:
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
创建密钥存储目录并添加清华大学镜像源的 GPG 密钥:
# 创建密钥目录
sudo mkdir -p /etc/apt/keyrings
# 下载并添加 Docker GPG 密钥(使用清华大学镜像源)
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
添加适用于 ARM64 架构的 Docker CE 软件源:
echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
查看可用的 Docker CE 版本和相关组件版本:
# 查看 Docker CE 可用版本
apt-cache madison docker-ce
# 查看 containerd.io 可用版本
apt-cache madison containerd.io
# 查看 Docker Compose Plugin 可用版本
apt-cache madison docker-compose-plugin
安装 Docker CE 26.1.4 及相关组件:
sudo apt install -y \
docker-ce=5:26.1.4-1~ubuntu.20.04~focal \
docker-ce-cli=5:26.1.4-1~ubuntu.20.04~focal \
containerd.io=1.6.28-1 \
docker-compose-plugin=2.17.3-1~ubuntu.20.04~focal
注意: 如果提示版本不存在,请根据步骤 5 的输出调整版本号
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 验证服务状态
sudo systemctl status docker
# 查看 Docker 版本
docker --version
# 查看详细信息
docker info
# 测试运行容器
sudo docker run hello-world
避免每次使用 sudo 运行 Docker 命令:
# 添加当前用户到 docker 组
sudo usermod -aG docker $USER
# 重新加载用户组(或重新登录)
newgrp docker
# 测试不使用 sudo 运行
docker ps
创建 /etc/docker/daemon.json
配置文件进行优化:
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json > /dev/null
{
"data-root": "/var/lib/docker",
"registry-mirrors": [
"https://hub.geekery.cn/",
"https://ghcr.geekery.cn",
"https://wbzql24b.mirror.aliyuncs.com",
"https://hub.1panel.dev"
],
"insecure-registries": [
"*.*.*.*:86",
"*.*.*.*:86"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5",
"compress": "true"
},
"storage-driver": "overlay2",
"live-restore": true,
"features": {
"buildkit": true
},
"experimental": false,
"default-cgroupns-mode": "host",
"bip": "172.168.100.1/24",
"default-address-pools": [
{
"base": "172.168.0.0/16",
"size": 24
}
],
"fixed-cidr": "172.168.100.0/25"
}
EOF
配置说明:
- 添加了更多国内镜像源以提高下载速度
- 可根据实际需求调整镜像源和网络配置
- insecure-registries 配置可根据实际私有仓库地址修改
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重启 Docker 服务
sudo systemctl restart docker
# 验证服务状态
sudo systemctl status docker
# 验证镜像源配置
docker info | grep -A 10 "Registry Mirrors"
# 验证网络配置
ip addr show docker0
# 验证存储驱动
docker info | grep "Storage Driver"
# 测试容器网络
docker run --rm alpine ip addr show eth0
hub.geekery.cn
: 高速国内 Docker Hub 镜像ghcr.geekery.cn
: GitHub Container Registry 镜像wbzql24b.mirror.aliyuncs.com
: 阿里云镜像源registry.docker-cn.com
: Docker 中国官方镜像docker.mirrors.ustc.edu.cn
: 中科大镜像源bip
: 设置 docker0 网桥为 172.168.100.1/24fixed-cidr
: 限制容器 IP 范围为 172.168.100.0/25default-address-pools
: 自定义网络地址池max-size
: 单个日志文件最大 100MBmax-file
: 保留最多 5 个日志文件compress
: 启用日志压缩live-restore
: 支持 Docker 重启时容器继续运行buildkit
: 启用新的构建引擎overlay2
: 使用 overlay2 存储驱动(Ubuntu 20.04 默认支持)如果遇到权限错误,确保用户在 docker 组中:
groups $USER | grep docker
如果网络配置没有生效,尝试删除并重建 docker0 网桥:
sudo systemctl stop docker
sudo ip link delete docker0 2>/dev/null || true
sudo systemctl start docker
验证镜像源是否正确配置:
docker info | grep -A 5 "Registry Mirrors"
如果遇到启动问题,查看详细日志:
sudo journalctl -u docker.service -f
如果看到 “WARNING: No swap limit support”,这是正常的,不影响 Docker 功能。如需修复:
sudo nano /etc/default/grub
# 添加: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash cgroup_enable=memory swapaccount=1"
sudo update-grub
sudo reboot
# 确认内核版本符合要求
uname -r
# 应该是 5.4.0 或更高版本
# 检查 systemd 版本
systemctl --version
# Ubuntu 20.04 使用 systemd 245+
如果需要升级到更新版本:
# 查看可用版本
apt-cache madison docker-ce
# 升级到指定版本
sudo apt install docker-ce=<新版本号> docker-ce-cli=<新版本号>
# 或升级到最新版本
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 停止服务
sudo systemctl stop docker docker.socket
# 卸载包
sudo apt remove -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 清理数据(注意:会删除所有镜像和容器)
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
# 移除用户组(可选)
sudo delgroup docker
注意: