CentOS下Docker生态全配置指南:从安装到高效运维

CentOS Docker 安装指南

1.1 系统环境准备

在CentOS 7/8系统上安装Docker前,需确保系统满足以下条件:

  • 64位x86架构
  • 内核版本≥3.10(通过uname -r验证)
  • 已安装依赖包:yum-utils、device-mapper-persistent-data、lvm2

推荐执行前置清理命令:

  1. sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

1.2 官方仓库安装

通过yum-config-manager添加Docker官方仓库:

  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装特定版本(示例为20.10版本):

  1. sudo yum install docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io

1.3 阿里云镜像加速安装

对于国内用户,推荐使用阿里云镜像源:

  1. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. sudo yum install docker-ce docker-ce-cli containerd.io

安装完成后启动服务:

  1. sudo systemctl enable docker
  2. sudo systemctl start docker

Docker国内镜像仓库配置

2.1 镜像加速器原理

国内镜像仓库通过缓存Docker Hub镜像,解决网络延迟问题。主流方案包括:

  • 阿里云容器镜像服务(ACR)
  • 腾讯云镜像仓库
  • 华为云SWR
  • 网易镜像站

2.2 阿里云镜像配置

  1. 登录阿里云控制台获取专属加速器地址
  2. 修改daemon.json配置文件:
    1. sudo mkdir -p /etc/docker
    2. sudo tee /etc/docker/daemon.json <<-'EOF'
    3. {
    4. "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
    5. }
    6. EOF
  3. 重启Docker服务:
    1. sudo systemctl daemon-reload
    2. sudo systemctl restart docker

2.3 腾讯云镜像配置

类似配置方式,使用腾讯云提供的加速地址:

  1. {
  2. "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
  3. }

Proxy代理配置方案

3.1 系统级代理设置

修改/etc/systemd/system/docker.service.d/http-proxy.conf:

  1. [Service]
  2. Environment="HTTP_PROXY=http://proxy.example.com:8080"
  3. Environment="HTTPS_PROXY=http://proxy.example.com:8080"
  4. Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

应用配置:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

3.2 容器级代理配置

创建自定义网络并设置DNS:

  1. docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 mynet

运行容器时指定代理:

  1. docker run -e HTTP_PROXY=http://proxy:8080 \
  2. -e HTTPS_PROXY=http://proxy:8080 \
  3. --network mynet \
  4. alpine env

3.3 认证代理配置

对于需要认证的代理,创建认证文件:

  1. echo "username:password" > ~/.docker-proxy-auth
  2. chmod 600 ~/.docker-proxy-auth

修改docker服务配置:

  1. [Service]
  2. Environment="HTTP_PROXY=http://username:password@proxy.example.com:8080"

docker-compose安装与使用

4.1 官方安装方式

推荐使用pip安装最新版本:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose

验证安装:

  1. docker-compose version

4.2 国内源安装

使用清华源加速下载:

  1. sudo curl -L "https://mirrors.tuna.tsinghua.edu.cn/docker-compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

4.3 基础使用示例

创建docker-compose.yml文件:

  1. version: '3.8'
  2. services:
  3. web:
  4. image: nginx:latest
  5. ports:
  6. - "80:80"
  7. volumes:
  8. - ./html:/usr/share/nginx/html
  9. db:
  10. image: mysql:5.7
  11. environment:
  12. MYSQL_ROOT_PASSWORD: example

常用命令:

  1. docker-compose up -d # 后台启动
  2. docker-compose logs -f # 查看日志
  3. docker-compose down # 停止并删除

4.4 高级配置技巧

使用.env文件管理环境变量:

  1. # .env文件内容
  2. MYSQL_ROOT_PASSWORD=secret
  3. DB_NAME=myapp

在compose文件中引用:

  1. environment:
  2. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

最佳实践与故障排除

5.1 性能优化建议

  • 配置存储驱动为overlay2(CentOS 7默认)
  • 调整日志驱动为json-file并设置max-size
  • 限制单个容器资源使用(—cpus, —memory)

5.2 常见问题解决

问题1:镜像拉取失败

  • 检查/etc/docker/daemon.json配置
  • 验证代理设置是否正确
  • 使用docker info查看镜像加速器状态

问题2:docker-compose版本过低

  • 完全卸载旧版本后重新安装
  • 检查PATH环境变量顺序

问题3:容器网络不通

  • 检查防火墙设置(sudo firewall-cmd --list-all
  • 验证自定义网络配置
  • 使用docker network inspect诊断

5.3 安全建议

  • 定期更新Docker和组件
  • 使用非root用户运行docker命令
  • 限制容器权限(—cap-drop, —read-only)
  • 定期清理无用镜像和容器

总结

本文系统阐述了CentOS环境下Docker生态的完整配置流程,从基础安装到高级运维技巧。通过合理配置国内镜像仓库和代理,可显著提升国内用户的Docker使用体验。docker-compose的引入则进一步简化了多容器应用的管理。建议开发者根据实际需求选择合适的配置方案,并定期维护系统以确保最佳性能和安全性。

实际部署时,建议先在测试环境验证所有配置,再应用到生产环境。对于企业用户,可考虑结合CI/CD流水线实现Docker环境的自动化部署和管理。随着容器技术的不断发展,持续关注Docker官方更新和国内云服务商的优化方案,将有助于保持技术栈的先进性。