在国内机器安装 docker 并配置加速

Adrain

Docker 在国内服务器的最佳实践:安装、加速与优化指南

1. Docker 技术背景

1.1 为什么选择 Docker?

Docker 提供了以下核心优势:

  • 一致的运行环境:确保开发、测试和生产环境的一致性
  • 快速部署:容器化应用可以秒级启动
  • 资源隔离:通过 namespace 和 cgroups 实现资源隔离
  • 版本控制:支持镜像版本管理和回滚
  • 微服务支持:适合现代微服务架构

1.2 Docker 架构简介

Docker 采用客户端-服务器(C/S)架构,主要组件包括:

  • Docker 守护进程(dockerd)
  • Docker 客户端(docker)
  • Docker 注册服务器(Registry)
  • Docker 对象(镜像、容器、网络、数据卷)

2. Docker 安装指南

2.1 系统要求

  • Linux 内核版本 > 3.10
  • 推荐操作系统:Ubuntu 18.04+、CentOS 7+
  • 至少 2GB RAM(推荐 4GB 以上)

2.2 Ubuntu/Debian 系统安装

# 更新软件包索引
sudo apt-get update

# 安装必要的系统工具
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 使用国内镜像源安装
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

2.3 CentOS 系统安装

# 安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 Docker 源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io

2.4 验证安装

# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证版本
docker --version
docker info

3. Docker 镜像加速配置

3.1 配置镜像加速器

创建或修改 daemon.json 配置文件:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.mirrors.aster.edu.pl",
        "https://docker.mirrors.imoyuapp.win",
        "https://mirror.ccs.tencentyun.com",
        "https://registry.docker-cn.com"
    ],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    },
    "data-root": "/var/lib/docker",
    "storage-driver": "overlay2",
    "default-ulimits": {
        "nofile": {
            "Name": "nofile",
            "Hard": 64000,
            "Soft": 64000
        }
    }
}
EOF

3.2 优化配置说明

  • registry-mirrors:配置多个镜像源以实现故障转移
  • log-driverlog-opts:限制容器日志大小,防止磁盘占满
  • data-root:指定 Docker 数据存储位置
  • storage-driver:使用性能更好的 overlay2 存储驱动
  • default-ulimits:优化容器文件句柄限制

3.3 应用配置

sudo systemctl daemon-reload
sudo systemctl restart docker

4. 常见问题与解决方案

4.1 镜像拉取失败

如果遇到镜像拉取超时,可以尝试:

  • 更换其他镜像源
  • 使用 docker pull 重试机制:
for i in {1..5}; do docker pull image:tag && break || sleep 15; done

4.2 存储空间问题

定期清理无用的镜像和容器:

# 清理悬空镜像
docker image prune -f

# 清理停止的容器
docker container prune -f

# 清理未使用的数据卷
docker volume prune -f

4.3 网络优化

优化 Docker 网络性能:

# 修改 MTU 值
sudo tee -a /etc/docker/daemon.json <<EOF
{
    "mtu": 1450
}
EOF

5. 安全性建议

5.1 基本安全配置

  • 定期更新 Docker 版本
  • 使用非 root 用户运行 Docker
  • 限制容器资源使用
  • 使用安全的基础镜像

5.2 配置示例

# 添加用户到 docker 组
sudo usermod -aG docker $USER

# 配置容器资源限制
docker run -d \
    --cpu-shares=512 \
    --memory=1g \
    --memory-swap=2g \
    --pids-limit=100 \
    your-image

6. Docker 监控最佳实践

6.1 容器监控工具

推荐使用以下工具进行 Docker 监控:

  • Prometheus + cAdvisor: 收集容器指标
  • Grafana: 可视化监控面板
  • Alertmanager: 告警管理

6.2 监控指标配置

# 启动 cAdvisor
docker run -d \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --name=cadvisor \
  google/cadvisor:latest

6.3 关键监控指标

  • 容器 CPU 使用率
  • 内存使用情况
  • 磁盘 I/O
  • 网络流量
  • 容器重启次数

6.4 告警配置示例

groups:
  - name: docker_alerts
    rules:
      - alert: ContainerHighCPU
        expr: container_cpu_usage_seconds_total > 0.8
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: '容器 CPU 使用率过高'
      - alert: ContainerHighMemory
        expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.8
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: '容器内存使用率过高'

7. 总结

通过本文的配置和优化建议,你可以在国内环境下更高效地使用 Docker:

  • 使用国内镜像源加速安装和镜像拉取
  • 优化 Docker 守护进程配置
  • 实施必要的安全措施
  • 解决常见问题
  • 建立完善的监控体系

持续关注 Docker 生态系统的发展,及时更新配置和最佳实践,将帮助你在容器化部署中获得更好的体验。

参考链接