阿里云CentOS环境下Docker Compose详细使用教程
阿里云CentOS环境下Docker Compose详细使用教程
一、环境准备
1. 系统要求
- 操作系统:CentOS 7/8(推荐阿里云ECS镜像,已优化网络性能)。
- Docker版本:Docker CE 18.06+(支持Docker Compose v2+)。
- 硬件配置:至少2GB内存(生产环境建议4GB+),CPU支持虚拟化。
2. 安装Docker
若未安装Docker,请先按以下步骤安装:
# 卸载旧版本(如存在)
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 配置阿里云YUM源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker# 验证安装
sudo docker --version
3. 配置阿里云镜像加速器
- 登录阿里云容器镜像服务控制台,获取专属加速地址(如
https://xxxx.mirror.aliyuncs.com)。 - 编辑Docker配置文件:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker - 验证加速效果:
sudo docker info | grep "Registry Mirrors" -A 1
二、安装Docker Compose
1. 方法一:通过包管理器安装(推荐)
# CentOS 7/8 安装Docker Compose插件
sudo yum install -y docker-compose-plugin# 验证安装
sudo docker compose version
2. 方法二:手动安装(兼容旧版本)
# 下载Docker Compose二进制文件(以v2.20.2为例)
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# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose# 创建软链接(可选)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose# 验证安装
docker-compose --version
三、Docker Compose核心概念
1. 核心文件:docker-compose.yml
- 作用:定义多容器应用的配置(服务、网络、卷等)。
- 格式:YAML(缩进敏感,使用2个空格)。
- 版本:推荐使用
version: '3'或更高版本。
2. 关键指令
| 指令 | 作用 | 示例 |
|---|---|---|
services | 定义容器服务 | services: {mysql: {...}} |
image | 指定镜像名称及标签 | image: nginx:latest |
build | 从Dockerfile构建镜像 | build: ./app |
ports | 端口映射(宿主机:容器) | ports: ["8080:80"] |
volumes | 数据卷挂载 | volumes: ["./data:/var/lib/mysql"] |
environment | 设置环境变量 | environment: {MYSQL_ROOT_PASSWORD: "123456"} |
networks | 指定容器网络 | networks: ["my_net"] |
depends_on | 依赖服务(启动顺序) | depends_on: ["mysql"] |
四、实战案例:部署WordPress博客
1. 创建项目目录
mkdir ~/wordpress && cd ~/wordpress
2. 编写docker-compose.yml
version: '3.8'services:mysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: "123456"MYSQL_DATABASE: "wordpress"MYSQL_USER: "wpuser"MYSQL_PASSWORD: "wppass"volumes:- mysql_data:/var/lib/mysqlnetworks:- wp_networdpress:image: wordpress:latestports:- "8080:80"environment:WORDPRESS_DB_HOST: "mysql"WORDPRESS_DB_USER: "wpuser"WORDPRESS_DB_PASSWORD: "wppass"WORDPRESS_DB_NAME: "wordpress"depends_on:- mysqlnetworks:- wp_netvolumes:mysql_data:networks:wp_net:
3. 启动服务
# 后台启动(推荐)
sudo docker compose up -d# 查看运行状态
sudo docker compose ps# 查看日志
sudo docker compose logs -f
4. 访问WordPress
- 浏览器访问:
http://<阿里云ECS公网IP>:8080 - 完成安装向导(数据库信息已通过环境变量配置)。
5. 停止服务
# 停止并删除容器(保留数据卷和网络)
sudo docker compose down# 彻底清理(删除数据卷)
sudo docker compose down -v
五、高级用法
1. 多环境配置(开发/测试/生产)
通过不同文件覆盖默认配置:
# 默认使用docker-compose.yml
# 开发环境:docker-compose.override.yml
# 测试环境:docker-compose.test.yml
# 生产环境:docker-compose.prod.yml# 启动开发环境(自动合并配置)
sudo docker compose -f docker-compose.yml -f docker-compose.override.yml up -d
2. 使用.env文件管理变量
创建.env文件:
MYSQL_ROOT_PASSWORD=secure_password
WORDPRESS_DB_HOST=mysql
在docker-compose.yml中引用:
environment:MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
3. 构建自定义镜像
若需修改WordPress镜像,可添加Dockerfile:
FROM wordpress:latest
RUN apt-get update && apt-get install -y vim
修改docker-compose.yml:
wordpress:build: . # 指向Dockerfile所在目录ports:- "8080:80"
4. 健康检查
为服务添加健康检查:
wordpress:image: wordpress:latesthealthcheck:test: ["CMD", "curl", "-f", "http://localhost"]interval: 30stimeout: 10sretries: 3
六、常见问题解决
1. 端口冲突
- 现象:启动失败,提示
Port already in use。 - 解决:
- 修改
ports映射为其他端口(如"8081:80")。 - 停止占用端口的进程:
sudo netstat -tulnp | grep 8080 sudo kill <PID>
- 修改
2. 数据卷权限问题
- 现象:MySQL容器启动失败,日志显示
Permission denied。 - 解决:
- 调整宿主机目录权限:
sudo chown -R 999:999 ./mysql_data # MySQL默认用户UID为999 - 或运行容器时指定用户:
mysql:image: mysql:5.7user: "1000:1000" # 使用宿主机用户UID:GIDvolumes:- ./mysql_data:/var/lib/mysql
- 调整宿主机目录权限:
3. 容器无法访问互联网
- 现象:容器内
ping失败或apt-get无法下载。 - 解决:
- 检查宿主机网络是否正常。
- 重启Docker服务:
sudo systemctl restart docker - 若使用自定义网络,确保网络配置正确:
networks:default:driver: bridgeipam:config:- subnet: 172.20.0.0/16
4. 版本兼容性问题
- 现象:
docker compose命令报错unknown shorthand flag。 - 解决:
- 升级Docker Compose到最新版本:
sudo pip install --upgrade docker-compose - 或使用完整命令形式:
sudo docker-compose up -d # 旧版语法
- 升级Docker Compose到最新版本:
七、总结
- 核心流程:编写
docker-compose.yml→ 定义服务 → 启动容器 → 管理生命周期。 - 关键技巧:
- 使用数据卷持久化数据。
- 通过
.env文件集中管理变量。 - 利用
depends_on控制启动顺序。 - 多环境配置通过文件覆盖实现。
- 扩展学习:
- Docker Compose官方文档
- 阿里云容器服务最佳实践
通过本教程,您可以在阿里云CentOS环境下高效使用Docker Compose编排多容器应用,实现快速部署和灵活扩展。
