CentOS环境下Docker生态全流程配置指南

CentOS Docker 安装、Docker国内镜像仓库、使用proxy代理配置、docker-compose安装指南

一、CentOS Docker安装

1.1 系统要求与前置检查

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

  • CentOS 7/8 64位系统
  • 至少2GB内存(生产环境建议4GB+)
  • 关闭SELinux或设置允许模式:sudo setenforce 0(临时)或修改/etc/selinux/config(永久)
  • 卸载旧版本:sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

1.2 安装步骤

1.2.1 配置YUM仓库

  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. # 国内用户可替换为阿里云镜像源
  4. sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2.2 安装Docker CE

  1. sudo yum install -y docker-ce docker-ce-cli containerd.io
  2. # 指定版本安装(可选)
  3. # sudo yum install docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io

1.2.3 启动与验证

  1. sudo systemctl enable docker
  2. sudo systemctl start docker
  3. sudo docker run hello-world # 验证安装

1.3 常见问题处理

  • 镜像拉取慢:后续章节将介绍国内镜像配置
  • 权限问题:将用户加入docker组sudo usermod -aG docker $USER,需重新登录生效
  • 防火墙冲突:开放必要端口或禁用防火墙(生产环境谨慎操作)

二、Docker国内镜像仓库配置

2.1 镜像加速原理

国内镜像仓库通过CDN技术缓存Docker Hub镜像,显著提升拉取速度。主要提供商包括:

  • 阿里云容器镜像服务(需账号)
  • 腾讯云Docker镜像仓库
  • 华为云SWR
  • 网易镜像站
  • 中科大镜像站

2.2 配置方法

2.2.1 阿里云镜像配置(推荐)

  1. 登录阿里云控制台 → 容器镜像服务 → 镜像加速
  2. 获取专属加速地址(如https://<your-id>.mirror.aliyuncs.com
  3. 修改或创建/etc/docker/daemon.json
    1. {
    2. "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
    3. }

2.2.2 通用镜像配置

  1. {
  2. "registry-mirrors": [
  3. "https://registry.docker-cn.com",
  4. "http://hub-mirror.c.163.com",
  5. "https://mirror.baidubce.com"
  6. ]
  7. }

2.2.3 应用配置

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

2.3 验证镜像加速

  1. docker pull nginx # 观察拉取速度
  2. docker inspect --format='{{.RepoDigests}}' nginx # 验证镜像来源

三、Proxy代理配置

3.1 适用场景

  • 企业内网环境
  • 访问国外Docker仓库需求
  • 安全审计要求

3.2 系统级代理配置

3.2.1 环境变量方式

  1. # 临时设置
  2. export HTTP_PROXY=http://proxy.example.com:8080
  3. export HTTPS_PROXY=http://proxy.example.com:8080
  4. export NO_PROXY=localhost,127.0.0.1,.example.com
  5. # 永久设置(写入/etc/profile或~/.bashrc)
  6. echo 'export HTTP_PROXY=http://proxy.example.com:8080' >> /etc/profile
  7. source /etc/profile

3.2.2 systemd服务配置

修改/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.3 Docker客户端代理配置

创建或修改~/.docker/config.json

  1. {
  2. "proxies": {
  3. "default": {
  4. "httpProxy": "http://proxy.example.com:8080",
  5. "httpsProxy": "http://proxy.example.com:8080",
  6. "noProxy": "localhost,127.0.0.1,.example.com"
  7. }
  8. }
  9. }

3.4 验证代理设置

  1. docker run --rm alpine env | grep -i proxy # 检查容器内环境变量
  2. docker build --no-cache -t proxy-test . # 测试构建过程

四、docker-compose安装与使用

4.1 安装方式

4.1.1 二进制包安装(推荐)

  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

4.1.2 Python pip安装

  1. sudo pip install docker-compose # 需先安装python-pip

4.1.3 国内镜像源安装

  1. sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

4.2 验证安装

  1. docker-compose --version
  2. docker-compose version # 显示详细版本信息

4.3 基础使用示例

创建docker-compose.yml文件:

  1. version: '3'
  2. services:
  3. web:
  4. image: nginx:latest
  5. ports:
  6. - "80:80"
  7. volumes:
  8. - ./html:/usr/share/nginx/html
  9. redis:
  10. image: redis:alpine

运行命令:

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

4.4 高级配置技巧

4.4.1 环境变量注入

  1. services:
  2. app:
  3. image: myapp
  4. environment:
  5. - DB_HOST=${DB_HOST:-localhost}
  6. - DB_PORT=${DB_PORT:-5432}

4.4.2 网络配置

  1. networks:
  2. frontend:
  3. driver: bridge
  4. backend:
  5. driver: bridge
  6. services:
  7. web:
  8. networks:
  9. - frontend
  10. db:
  11. networks:
  12. - backend

4.4.3 依赖管理

  1. services:
  2. db:
  3. image: postgres
  4. app:
  5. image: myapp
  6. depends_on:
  7. - db

五、综合应用案例

5.1 完整配置示例

  1. 创建/etc/docker/daemon.json

    1. {
    2. "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"],
    3. "insecure-registries": ["registry.example.com"]
    4. }
  2. 创建~/.docker/config.json

    1. {
    2. "auths": {
    3. "registry.example.com": {
    4. "auth": "base64-encoded-auth"
    5. }
    6. },
    7. "proxies": {
    8. "default": {
    9. "httpProxy": "http://proxy.example.com:8080"
    10. }
    11. }
    12. }
  3. 创建docker-compose.yml
    ```yaml
    version: ‘3.8’
    services:
    wordpress:
    image: wordpress:latest
    ports:

    • “8080:80”
      environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
      depends_on:
    • db
      db:
      image: mysql:5.7
      environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_ROOT_PASSWORD: rootpass
      volumes:
    • db_data:/var/lib/mysql

volumes:
db_data:
```

5.2 运维建议

  1. 定期更新sudo yum update docker-ce
  2. 资源监控:使用docker statscAdvisor
  3. 日志管理:配置log-driverlog-opts
  4. 安全加固
    • 限制--iptables=false(如不需要网络管理)
    • 使用--tlsverify启用加密通信
    • 定期清理无用镜像:docker system prune

六、常见问题解决方案

6.1 镜像拉取失败

  • 检查代理配置是否正确
  • 验证/etc/docker/daemon.json语法
  • 尝试docker pull --debug获取详细错误

6.2 docker-compose版本不兼容

  • 明确指定版本:version: '3.8'
  • 检查服务定义语法是否符合版本要求

6.3 容器无法访问外网

  • 检查主机网络配置
  • 验证容器内/etc/resolv.conf
  • 尝试使用--network host模式测试

6.4 性能优化建议

  • 为生产环境配置--storage-driver=overlay2
  • 调整--max-concurrent-downloads参数
  • 考虑使用docker swarmKubernetes进行集群管理

七、总结与展望

本文系统阐述了在CentOS环境下构建Docker生产环境的完整流程,涵盖从基础安装到高级配置的各个方面。通过合理配置国内镜像仓库和代理设置,可显著提升开发效率;而docker-compose的引入则极大简化了多容器应用的管理复杂度。

未来发展趋势包括:

  1. Docker与容器编排工具的深度集成
  2. 更细粒度的资源控制与安全隔离
  3. 边缘计算场景下的轻量化部署方案
  4. 与服务网格(如Istio)的无缝对接

建议开发者持续关注Docker官方文档和CNCF生态项目,保持技术栈的更新与优化。通过合理运用本文介绍的技术方案,可构建出高效、稳定、安全的容器化应用环境。