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仓库
sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 国内用户可替换为阿里云镜像源sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.2.2 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io# 指定版本安装(可选)# sudo yum install docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io
1.2.3 启动与验证
sudo systemctl enable dockersudo systemctl start dockersudo 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 阿里云镜像配置(推荐)
- 登录阿里云控制台 → 容器镜像服务 → 镜像加速
- 获取专属加速地址(如
https://<your-id>.mirror.aliyuncs.com) - 修改或创建
/etc/docker/daemon.json:{"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]}
2.2.2 通用镜像配置
{"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.baidubce.com"]}
2.2.3 应用配置
sudo systemctl daemon-reloadsudo systemctl restart docker
2.3 验证镜像加速
docker pull nginx # 观察拉取速度docker inspect --format='{{.RepoDigests}}' nginx # 验证镜像来源
三、Proxy代理配置
3.1 适用场景
- 企业内网环境
- 访问国外Docker仓库需求
- 安全审计要求
3.2 系统级代理配置
3.2.1 环境变量方式
# 临时设置export HTTP_PROXY=http://proxy.example.com:8080export HTTPS_PROXY=http://proxy.example.com:8080export NO_PROXY=localhost,127.0.0.1,.example.com# 永久设置(写入/etc/profile或~/.bashrc)echo 'export HTTP_PROXY=http://proxy.example.com:8080' >> /etc/profilesource /etc/profile
3.2.2 systemd服务配置
修改/etc/systemd/system/docker.service.d/http-proxy.conf:
[Service]Environment="HTTP_PROXY=http://proxy.example.com:8080"Environment="HTTPS_PROXY=http://proxy.example.com:8080"Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
应用配置:
sudo systemctl daemon-reloadsudo systemctl restart docker
3.3 Docker客户端代理配置
创建或修改~/.docker/config.json:
{"proxies": {"default": {"httpProxy": "http://proxy.example.com:8080","httpsProxy": "http://proxy.example.com:8080","noProxy": "localhost,127.0.0.1,.example.com"}}}
3.4 验证代理设置
docker run --rm alpine env | grep -i proxy # 检查容器内环境变量docker build --no-cache -t proxy-test . # 测试构建过程
四、docker-compose安装与使用
4.1 安装方式
4.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-composesudo chmod +x /usr/local/bin/docker-compose
4.1.2 Python pip安装
sudo pip install docker-compose # 需先安装python-pip
4.1.3 国内镜像源安装
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 验证安装
docker-compose --versiondocker-compose version # 显示详细版本信息
4.3 基础使用示例
创建docker-compose.yml文件:
version: '3'services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/htmlredis:image: redis:alpine
运行命令:
docker-compose up -d # 后台启动docker-compose ps # 查看状态docker-compose logs # 查看日志docker-compose down # 停止并删除
4.4 高级配置技巧
4.4.1 环境变量注入
services:app:image: myappenvironment:- DB_HOST=${DB_HOST:-localhost}- DB_PORT=${DB_PORT:-5432}
4.4.2 网络配置
networks:frontend:driver: bridgebackend:driver: bridgeservices:web:networks:- frontenddb:networks:- backend
4.4.3 依赖管理
services:db:image: postgresapp:image: myappdepends_on:- db
五、综合应用案例
5.1 完整配置示例
-
创建
/etc/docker/daemon.json:{"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"],"insecure-registries": ["registry.example.com"]}
-
创建
~/.docker/config.json:{"auths": {"registry.example.com": {"auth": "base64-encoded-auth"}},"proxies": {"default": {"httpProxy": "http://proxy.example.com:8080"}}}
-
创建
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
- “8080:80”
volumes:
db_data:
```
5.2 运维建议
- 定期更新:
sudo yum update docker-ce - 资源监控:使用
docker stats和cAdvisor - 日志管理:配置
log-driver和log-opts - 安全加固:
- 限制
--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 swarm或Kubernetes进行集群管理
七、总结与展望
本文系统阐述了在CentOS环境下构建Docker生产环境的完整流程,涵盖从基础安装到高级配置的各个方面。通过合理配置国内镜像仓库和代理设置,可显著提升开发效率;而docker-compose的引入则极大简化了多容器应用的管理复杂度。
未来发展趋势包括:
- Docker与容器编排工具的深度集成
- 更细粒度的资源控制与安全隔离
- 边缘计算场景下的轻量化部署方案
- 与服务网格(如Istio)的无缝对接
建议开发者持续关注Docker官方文档和CNCF生态项目,保持技术栈的更新与优化。通过合理运用本文介绍的技术方案,可构建出高效、稳定、安全的容器化应用环境。