简介
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止。它是基于YAML文件来定义一组相关联的应用容器为一个项目(project),然后通过单条命令来启动整个项目。这种编排方式使得容器之间的依赖关系变得清晰,便于管理和维护。
使用Docker Compose进行服务编排的基本步骤包括:
-
定义应用运行环境:通过Dockerfile来定义每个服务的运行环境。
-
定义服务:在docker-compose.yml文件中,定义组成应用的各服务,包括容器运行的镜像、参数、依赖等。这个文件描述了多个容器如何一起运行,包括使用的镜像、端口映射、环境变量、卷挂载等配置。
-
启动应用:使用
docker-compose up
命令,根据docker-compose.yml文件中的定义,自动构建需要的镜像并启动所有服务。这个命令会创建并启动定义在yml文件中的服务,并且会按照依赖关系来启动服务。
Docker Compose的特点和优势包括:
-
简单易用:通过简单的配置文件和命令,就能实现复杂的多容器应用的部署和管理。
-
扩展性强:可以轻松调整服务实例的数量,通过修改docker-compose.yml文件并执行
docker-compose scale service-name=N
命令来实现。 -
网络配置灵活:支持自定义网络,使服务之间可以安全地进行通信,而无需暴露到公共网络中。
-
适用于多种场景:可以用于快速搭建复杂的应用环境,如前端服务器、后端API、数据库等;也可以为产品展示准备临时但完整的环境;对于负载较小的应用,Docker Compose还提供了一种简洁的部署方式。
环境
Redhat 9.2
ip :192.168.200.133
安装docker-compose方式:存储库安装
compose 版本:Docker Compose version v2.27.0
步骤
安装docker
安装参考:安装docker
[root@admin ~]# yum -y install yum-utils.noarch
[root@admin ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
添加仓库自:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@admin ~]# yum -y install docker-*
省略 。。。。。。。。
官网下载安装安装 Compose 插件 |Docker 文档
先安装docker的源
[root@admin ~]# yum-config-manager --add-repo
https://download.docker.com/linux/rhel/docker-ce.repo
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
添加仓库自:https://download.docker.com/linux/rhel/docker-ce.repo
[root@admin ~]#
[root@admin ~]# yum update && yum install docker-compose-plugin
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
Docker CE Stable - x86_64 12 kB/s | 3.5 kB 00:00
依赖关系解决。
无需任何处理。
完毕!
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
依赖关系解决。
===============================================================================================================================
软件包 架构 版本 仓库 大小
===============================================================================================================================
安装:
docker-compose-plugin x86_64 2.27.0-1.el9 docker-ce-stable 13 M
事务概要
===============================================================================================================================
安装 1 软件包
总下载:13 M
安装大小:60 M
确定吗?[y/N]: y
下载软件包:
docker-compose-plugin-2.27.0-1.el9.x86_64.rpm 626 kB/s | 13 MB 00:21
-------------------------------------------------------------------------------------------------------------------------------
总计 626 kB/s | 13 MB 00:21
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : docker-compose-plugin-2.27.0-1.el9.x86_64 1/1
运行脚本: docker-compose-plugin-2.27.0-1.el9.x86_64 1/1
验证 : docker-compose-plugin-2.27.0-1.el9.x86_64 1/1
已更新安装的产品。
已安装:
docker-compose-plugin-2.27.0-1.el9.x86_64
完毕!
[root@admin ~]#
查看版本
[root@admin ~]# docker compose version
Docker Compose version v2.27.0
使用docker compose 部署wordpress
创建yml文件
[root@admin ~]# mkdir /my_wordpress
[root@admin ~]# cd /my_wordpress/
[root@admin my_wordpress]# ls
[root@admin my_wordpress]# vim docker-compose.yml
version: '2' # docker-compose的版本
services: # 定义数据库服务
db:
image: mysql:5.7 # 使用的 Docker 镜像名称和标签
volumes:
- ./mysql_data:/var/lib/mysql # 挂载的卷,将本地的 mysql_data 目录映射到容器内的 /var/lib/mysql
ports:
- "3306:3306" # 端口映射,将主机的 3306 端口映射到容器的 3306 端口
restart: always # 设置容器始终重启,即使退出也会重启
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: 123456 # MySQL root 用户的密码
MYSQL_DATABASE: wordpress # 创建的数据库名称
MYSQL_USER: wordpress # 创建的数据库用户名
MYSQL_PASSWORD: wordpress # 数据库用户的密码
wordpress: # 定义 WordPress 服务
depends_on: # 表示这个服务依赖于 db 服务,即 db 服务需要先启动
- db
image: wordpress:latest # 使用的 Docker 镜像名称和标签(默认为 latest)
volumes:
- ./web_data:/var/www/html # 挂载的卷,将本地的 web_data 目录映射到容器内的 /var/www/html
ports: # 端口映射
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306 # WordPress 数据库的主机地址(由于使用 Docker Compose,所以可以直接使用服务名称)
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes: # 定义命名的卷,可以在多个服务中重复使用
mysql_data:
web_data:
[root@admin my_wordpress]# docker compose up -d
WARN[0000] /my_wordpress/docker-compose.yml: `version` is obsolete
[+] Running 34/34
✔ wordpress Pulled 283.2s
✔ a2abf6c4d29d Pull complete 115.9s
✔ c5608244554d Pull complete 115.9s
✔ 2d07066487a0 Pull complete 171.2s
✔ 1b6dfaf1958c Pull complete 171.2s
✔ 32c5e6a60073 Pull complete 205.5s
✔ 90cf855b27cc Pull complete 205.5s
✔ 8b0f1068c586 Pull complete 205.6s
✔ 5355461305e8 Pull complete 205.6s
✔ ad1eec592342 Pull complete 205.6s
✔ e03fbc76cb78 Pull complete 206.3s
✔ 1f5796e48b39 Pull complete 206.3s
✔ 72fbe8e1d4e7 Pull complete 206.3s
✔ 96edece66175 Pull complete 206.3s
✔ 5f46f0743de2 Pull complete 251.0s
✔ c9f9671a5e1f Pull complete 252.2s
✔ 3f543dcd35b1 Pull complete 252.2s
✔ c88e21a0c2a0 Pull complete 252.2s
✔ 964b4457a910 Pull complete 252.3s
✔ 0d55fb9a64ef Pull complete 282.1s
✔ fb009ff7c567 Pull complete 282.1s
✔ 4f058a67a50d Pull complete 282.1s
✔ db Pulled 388.0s
✔ 72a69066d2fe Already exists 0.0s
✔ 93619dbc5b36 Already exists 0.0s
✔ 99da31dd6142 Already exists 0.0s
✔ 626033c43d70 Already exists 0.0s
✔ 37d5d7efb64e Already exists 0.0s
✔ ac563158d721 Already exists 0.0s
✔ d2ba16033dad Already exists 0.0s
✔ 0ceb82207cd7 Pull complete 226.4s
✔ 37f2405cae96 Pull complete 371.2s
✔ e2482e017e53 Pull complete 371.2s
✔ 70deed891d42 Pull complete 371.2s
[+] Running 3/3
✔ Network my_wordpress_default Created 0.1s
✔ Container my_wordpress-db-1 Started 0.6s
✔ Container my_wordpress-wordpress-1 Started 0.9s
[root@admin my_wordpress]#
运行完成后访问wordpress网站 ,输入ip,一步步安装
安装过程省略
安装完成后重新输入IP访问
#默认的测试页面