1. 项目概述最近在阿里云上部署生产环境时需要为Ubuntu 22.04.5 LTS服务器安装Docker 29.1.5版本。这个看似简单的任务在实际操作中却遇到了不少坑特别是国内网络环境下从官方源安装速度极慢的问题。经过多次实践我总结出了一套使用阿里云镜像的完整方案特别适合国内生产环境部署。提示生产环境安装Docker不同于开发环境需要特别注意版本兼容性、安全配置和稳定性问题。2. 环境准备与依赖检查2.1 系统基础配置首先确保你的Ubuntu 22.04.5 LTS系统是最新状态sudo apt update sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl software-properties-common这几个基础包是Docker安装的前置依赖apt-transport-https允许apt通过HTTPS协议访问仓库ca-certificatesCA根证书用于验证HTTPS连接curl命令行下载工具software-properties-common提供add-apt-repository等管理工具2.2 内核版本检查生产环境特别需要注意内核兼容性uname -rDocker 29.x需要Linux内核版本至少为5.4以上。Ubuntu 22.04.5 LTS默认使用5.15内核完全满足要求。3. 使用阿里云镜像安装Docker3.1 配置阿里云Docker CE镜像源国内直接访问Docker官方源速度很慢使用阿里云镜像可以大幅提升下载速度curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archamd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable这里有几个关键点需要注意$(lsb_release -cs)会自动获取系统代号如jammy阿里云镜像仓库与官方源保持同步但下载速度更快生产环境建议固定Docker版本而不是总是安装最新版3.2 安装特定版本Docker查看阿里云镜像中可用的Docker版本apt-cache madison docker-ce安装指定版本29.1.5sudo apt install -y docker-ce5:29.1.5-3~ubuntu.22.04~jammy docker-ce-cli5:29.1.5-3~ubuntu.22.04~jammy containerd.io版本号格式说明5:Docker的epoch版本29.1.5主版本号3~ubuntu.22.04~jammyUbuntu特定构建版本3.3 验证安装安装完成后检查版本docker --version sudo docker run hello-world如果看到Hello from Docker!消息说明安装成功。4. 生产环境关键配置4.1 配置阿里云容器镜像加速除了安装源我们还需要配置容器镜像拉取加速sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://your-aliyun-mirror.mirror.aliyuncs.com], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2 } EOF配置说明registry-mirrors替换为你的阿里云容器镜像服务加速地址native.cgroupdriversystemd与systemd更好的集成log-driver日志文件配置防止日志无限增长storage-driver推荐使用overlay2存储驱动4.2 重启Docker服务应用配置sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl enable docker4.3 生产环境安全加固将普通用户加入docker组谨慎操作sudo usermod -aG docker $USER警告生产环境需要严格控制docker组用户因为docker组权限等同于root配置Docker守护进程监听方式推荐仅本地Unix socketsudo sed -i s/^ExecStart.*/ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock/ /lib/systemd/system/docker.service5. 常见问题与解决方案5.1 版本冲突问题如果之前安装过其他版本Docker需要彻底清理sudo apt remove --purge docker-engine docker docker.io containerd runc sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd5.2 GPG密钥过期问题如果遇到GPG密钥错误可以更新密钥sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD85.3 存储驱动问题检查当前存储驱动docker info | grep Storage Driver如果不是overlay2可以修改/etc/docker/daemon.json配置后重启服务。5.4 生产环境网络配置在阿里云ECS上可能需要额外配置sudo tee /etc/sysctl.d/docker.conf -EOF net.ipv4.ip_forward1 net.bridge.bridge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1 EOF sudo sysctl --system6. 性能优化与监控6.1 限制容器资源在生产环境中必须限制容器资源使用docker run -it --cpus.5 --memory512m ubuntu /bin/bash6.2 日志轮转配置防止Docker日志占用过多磁盘空间sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF6.3 健康检查配置为关键服务容器添加健康检查docker run --name nginx --health-cmdcurl -f http://localhost || exit 1 --health-interval5s --health-retries3 nginx7. 备份与恢复策略7.1 容器数据卷备份docker run --rm --volumes-from my_container -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /volume_data7.2 完整Docker环境备份sudo tar -czvf docker_backup.tar.gz /var/lib/docker7.3 镜像导出与导入docker save -o my_image.tar my_image:tag docker load -i my_image.tar8. 升级与维护8.1 安全更新策略定期检查并应用安全更新sudo apt update sudo apt list --upgradable sudo apt upgrade -y8.2 版本升级步骤升级Docker到新版本sudo apt update sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io8.3 回滚方案如果新版本出现问题可以回滚到旧版本sudo apt install docker-ceVERSION docker-ce-cliVERSION containerd.io9. 生产环境最佳实践使用Docker Compose编排多容器应用为每个服务配置资源限制实现集中式日志收集设置容器自动重启策略定期扫描镜像漏洞使用只读文件系统运行容器禁用容器内的root权限配置网络访问控制实现容器间通信加密建立完善的监控告警系统在实际生产环境中我通常会配置PrometheusGrafana监控Docker主机和容器性能指标使用ELK收集日志并设置适当的告警阈值。这些配置可以确保我们能够及时发现并处理潜在问题。