三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Ubuntu生产环境Docker安装与阿里云镜像加速配置指南

Ubuntu生产环境Docker安装与阿里云镜像加速配置指南

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-certificates:CA根证书,用于验证HTTPS连接
  • curl:命令行下载工具
  • software-properties-common:提供add-apt-repository等管理工具

2.2 内核版本检查

生产环境特别需要注意内核兼容性:

uname -r

Docker 29.x需要Linux内核版本至少为5.4以上。Ubuntu 22.04.5 LTS默认使用5.15内核,完全满足要求。

3. 使用阿里云镜像安装Docker

3.1 配置阿里云Docker CE镜像源

国内直接访问Docker官方源速度很慢,使用阿里云镜像可以大幅提升下载速度:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

这里有几个关键点需要注意:

  1. $(lsb_release -cs)会自动获取系统代号(如jammy)
  2. 阿里云镜像仓库与官方源保持同步,但下载速度更快
  3. 生产环境建议固定Docker版本,而不是总是安装最新版

3.2 安装特定版本Docker

查看阿里云镜像中可用的Docker版本:

apt-cache madison docker-ce

安装指定版本(29.1.5):

sudo apt install -y docker-ce=5:29.1.5-3~ubuntu.22.04~jammy docker-ce-cli=5:29.1.5-3~ubuntu.22.04~jammy containerd.io

版本号格式说明:

  • 5::Docker的epoch版本
  • 29.1.5:主版本号
  • 3~ubuntu.22.04~jammy:Ubuntu特定构建版本

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.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF

配置说明:

  • registry-mirrors:替换为你的阿里云容器镜像服务加速地址
  • native.cgroupdriver=systemd:与systemd更好的集成
  • log-driver:日志文件配置,防止日志无限增长
  • storage-driver:推荐使用overlay2存储驱动

4.2 重启Docker服务应用配置

sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl enable docker

4.3 生产环境安全加固

  1. 将普通用户加入docker组(谨慎操作):
sudo usermod -aG docker $USER

警告:生产环境需要严格控制docker组用户,因为docker组权限等同于root

  1. 配置Docker守护进程监听方式(推荐仅本地Unix socket):
sudo sed -i 's/^ExecStart=.*/ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock/' /lib/systemd/system/docker.service

5. 常见问题与解决方案

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/containerd

5.2 GPG密钥过期问题

如果遇到GPG密钥错误,可以更新密钥:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8

5.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_forward=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 EOF sudo sysctl --system

6. 性能优化与监控

6.1 限制容器资源

在生产环境中,必须限制容器资源使用:

docker run -it --cpus=".5" --memory="512m" ubuntu /bin/bash

6.2 日志轮转配置

防止Docker日志占用过多磁盘空间:

sudo tee /etc/docker/daemon.json <<-'EOF' { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF

6.3 健康检查配置

为关键服务容器添加健康检查:

docker run --name nginx --health-cmd="curl -f http://localhost || exit 1" --health-interval=5s --health-retries=3 nginx

7. 备份与恢复策略

7.1 容器数据卷备份

docker run --rm --volumes-from my_container -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /volume_data

7.2 完整Docker环境备份

sudo tar -czvf docker_backup.tar.gz /var/lib/docker

7.3 镜像导出与导入

docker save -o my_image.tar my_image:tag docker load -i my_image.tar

8. 升级与维护

8.1 安全更新策略

定期检查并应用安全更新:

sudo apt update sudo apt list --upgradable sudo apt upgrade -y

8.2 版本升级步骤

升级Docker到新版本:

sudo apt update sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io

8.3 回滚方案

如果新版本出现问题,可以回滚到旧版本:

sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

9. 生产环境最佳实践

  1. 使用Docker Compose编排多容器应用
  2. 为每个服务配置资源限制
  3. 实现集中式日志收集
  4. 设置容器自动重启策略
  5. 定期扫描镜像漏洞
  6. 使用只读文件系统运行容器
  7. 禁用容器内的root权限
  8. 配置网络访问控制
  9. 实现容器间通信加密
  10. 建立完善的监控告警系统

在实际生产环境中,我通常会配置Prometheus+Grafana监控Docker主机和容器性能指标,使用ELK收集日志,并设置适当的告警阈值。这些配置可以确保我们能够及时发现并处理潜在问题。

← 返回列表