CentOS Docker 安装、Docker国内镜像仓库、使用proxy代理配置、docker-compose安装
一、CentOS Docker 安装指南
1.1 系统环境准备
在CentOS 7/8系统上安装Docker前,需确认以下条件:
- 64位架构系统
- 至少2GB内存(生产环境建议4GB+)
- 禁用SELinux(临时方式:
setenforce 0) - 关闭防火墙或配置Docker端口规则(默认2375/2376)
建议使用最新稳定版CentOS,可通过以下命令检查系统版本:
cat /etc/redhat-release
1.2 安装步骤详解
步骤1:卸载旧版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
步骤2:安装依赖包
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
步骤3:配置Docker仓库
sudo 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
步骤4:安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io# 指定版本安装(示例)# sudo yum install -y docker-ce-20.10.17 docker-ce-cli-20.10.17
步骤5:启动服务
sudo systemctl enable dockersudo systemctl start dockersudo systemctl status docker # 应显示active (running)
1.3 验证安装
执行以下命令验证:
sudo docker run hello-world# 成功输出应包含"Hello from Docker!"
二、Docker国内镜像仓库配置
2.1 镜像加速必要性
国内访问Docker Hub存在网络延迟,配置镜像加速可提升:
- 镜像拉取速度提升3-10倍
- 避免拉取失败导致的部署中断
- 节省国际带宽成本
2.2 主流镜像源对比
| 镜像源 | 地址 | 稳定性 | 适用场景 |
|---|---|---|---|
| 阿里云 | https://.mirror.aliyuncs.com | 高 | 企业生产环境 |
| 腾讯云 | https://mirror.ccs.tencentyun.com | 中高 | 腾讯云用户 |
| 华为云 | https://.swr.myhuaweicloud.com | 中 | 华为云用户 |
| 中科大 | https://docker.mirrors.ustc.edu.cn | 高 | 学术机构 |
2.3 配置方法
方法1:修改daemon.json
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://<your_mirror_url>"],"max-concurrent-downloads": 10}EOFsudo systemctl daemon-reloadsudo systemctl restart docker
方法2:使用环境变量(临时)
export DOCKER_OPTS="--registry-mirror=https://<mirror_url>"
2.4 验证镜像加速
docker info | grep "Registry Mirrors" -A 10# 应显示配置的镜像地址
三、Proxy代理配置方案
3.1 适用场景
- 企业内网环境
- 需要访问私有仓库
- 跨地域部署时优化网络
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/profileecho 'export HTTPS_PROXY=http://proxy.example.com:8080' >> /etc/profilesource /etc/profile
方法2:systemd服务配置
sudo mkdir -p /etc/systemd/system/docker.service.dsudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<-'EOF'[Service]Environment="HTTP_PROXY=http://proxy.example.com:8080"Environment="HTTPS_PROXY=http://proxy.example.com:8080"EOFsudo systemctl daemon-reloadsudo systemctl restart docker
3.3 Docker客户端代理
对于docker-compose等工具,可在~/.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-compose安装与配置
4.1 安装方式对比
| 方式 | 命令 | 适用版本 | 更新方式 | |
|---|---|---|---|---|
| 官方二进制包 | `sudo curl -L … | sh` | 最新 | 手动更新 |
| Python pip | pip install docker-compose |
较旧 | pip升级 | |
| CentOS仓库 | sudo yum install docker-compose |
滞后 | yum更新 |
4.2 推荐安装方法
方法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
方法2:pip安装(适合已有Python环境)
sudo pip install --upgrade pipsudo pip install docker-compose
4.3 版本验证
docker-compose version# 应显示类似:# Docker Compose version v2.20.2
4.4 基础使用示例
创建docker-compose.yml文件:
version: '3.8'services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/htmldb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: examplevolumes:- db_data:/var/lib/mysqlvolumes:db_data:
执行命令:
docker-compose up -d # 后台启动docker-compose ps # 查看状态docker-compose down # 停止并删除
五、生产环境优化建议
- 镜像管理:建立私有仓库(Harbor/Nexus),设置镜像保留策略
- 资源限制:在docker-compose中配置CPU/内存限制
services:app:deploy:resources:limits:cpus: '0.5'memory: 512M
- 日志收集:配置ELK或Fluentd进行日志集中管理
- 安全加固:
- 定期更新Docker版本
- 限制root用户操作
- 使用AppArmor/SELinux进行容器隔离
六、常见问题解决方案
Q1:Docker服务启动失败
- 检查日志:
journalctl -u docker.service - 常见原因:端口冲突、存储驱动问题、配置文件错误
Q2:镜像拉取缓慢
- 确认镜像源配置正确
- 测试网络连通性:
curl -v https://registry-1.docker.io/v2/
Q3:docker-compose版本不兼容
- 检查版本兼容性矩阵
- 升级建议:先升级Docker再升级compose
Q4:代理配置不生效
- 检查环境变量是否被覆盖
- 使用
docker info | grep Proxy验证 - 检查防火墙是否放行代理端口
七、进阶技巧
- 多阶段构建优化:
```dockerfile
第一阶段:构建
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o myapp
第二阶段:运行
FROM alpine:latest
COPY —from=builder /app/myapp /usr/local/bin/
CMD [“myapp”]
2. **健康检查配置**:```yamlservices:web:image: nginxhealthcheck:test: ["CMD", "curl", "-f", "http://localhost"]interval: 30stimeout: 10sretries: 3
- GPU支持配置:
# 安装nvidia-docker2distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt-get updatesudo apt-get install -y nvidia-docker2sudo systemctl restart docker
通过以上配置,可在CentOS系统上构建完整的Docker生产环境,涵盖从基础安装到高级优化的全流程。实际部署时,建议先在测试环境验证配置,再逐步推广到生产环境。