当前位置: 首页 > news >正文

阿里云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. 配置阿里云镜像加速器

  1. 登录阿里云容器镜像服务控制台,获取专属加速地址(如https://xxxx.mirror.aliyuncs.com)。
  2. 编辑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
  3. 验证加速效果:
    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.yml → 定义服务 → 启动容器 → 管理生命周期。
  • 关键技巧
    • 使用数据卷持久化数据。
    • 通过.env文件集中管理变量。
    • 利用depends_on控制启动顺序。
    • 多环境配置通过文件覆盖实现。
  • 扩展学习
    • Docker Compose官方文档
    • 阿里云容器服务最佳实践

通过本教程,您可以在阿里云CentOS环境下高效使用Docker Compose编排多容器应用,实现快速部署和灵活扩展。

http://www.dtcms.com/a/613384.html

相关文章:

  • Windows 下 Docker Desktop 快速入门与镜像管理
  • 破解跨境数据传输瓶颈:中国德国高速跨境组网专线与本地化 IP 的协同策略
  • SpringCloud:Eureka和负载均衡
  • GSV6127D#ACP#高性能 Type-C/DisplayPort 1.4 中继器与双向 MIPI/LVDS 混合转换器
  • jquery做网站浏览量做竞价的网站做优化有效果吗
  • 交互式网站app商务网站建设期末考试
  • IoTSharp前端VUE采用npm run build编译提示require() of ES Module 出错
  • 高级IO-poll
  • 在JavaScript中,JavaScript 对象和 JSON 字符串互相转换
  • css之弹性盒子属性2
  • [LivePortrait] docs | Gradio用户界面
  • 基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
  • 【三维编辑】DREAMCATALYST:平衡可编辑性和ID的快速高效3D编辑
  • SemanticVLA:面向高效机器人操作的语义对齐剪枝与增强方法
  • 晋城市住建设局网站茂名公司网站设计
  • 太原做响应式网站软件开发公司厂家有哪些
  • 40_FastMCP 2.x 中文文档之FastMCP客户端认证:OAuth 身份验证详解
  • 二、Rabbit MQ 高级
  • 66-69 原型对象,toString(),垃圾回收
  • Node 的版本管理工具 nvm 介绍
  • ubuntu24.04搭建GitLab服务器
  • 前端 vs 后端:入行软件行业,我该如何选择?哪个更“简单”?
  • 网站产品策划中国建设银行遵义市分行网站
  • 【自适应卡尔曼滤波】(EKF、UKF、CKF等可通用)的创新思路:哪些参数该使用自适应思想来调整、该怎么调
  • RHCSE--SELinux
  • 安装k8s过程中涉及知识点梳理
  • 公司网站建设费用如何做账英语可以做推广的亲子类网站
  • 【2025】Java 从入门到实战:核心特性全解析(方法、类与对象、多态三大特性及关键字thissuper)附带代码案例
  • FSMC-TFTLCD显示实验(1)
  • Node.js 实现 Stripe 支付的简单示例