Docker Compose容器编排
作者:@郑琰
本文转载请注明出处!:https://www.cnblogs.com/zhengyan6/p/16352655.html
一、Docker Compose概念
Docker Compose (可简称Compose)是一个定义与运行复杂应用程序的 Docker 工具,是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
1、为什么要使用 Docker Compose部署容器
仅使用docker命令部署和管理多容器:应用程序时往往需要编写若干脚本文件,使用的命令可能会变得冗长,包括大量的选项和参数,配置过程比较复杂,而且容易发生差错。
- Docker Compose实质:
不是通过脚本和各种docker命令将多个容器组织起来,而是通过一个声明式的配置文件描述整个应用程序,从而让用户使用一条命令即可完成整个应用程序的部署。 - Docker Compose功能:
将逻辑关联的多个容器编排为一个整体进行统一管理,提高了应用程序部署效率。
2,使用Docker Compose的基本步骤
- 1,使用Dockerfile定义应用程序的环境,以便可以在任何地方分发。Compose编排主要是用于多容器的复杂应用程序,但是镜像还是要基于Dockerfile构建。
- 2,使用Compose文件定义组成应用程序的服务。文件声明的配置,可以定义包含多个相关互联的容器的程序(服务)。
- 3,执行docker-compose up命令启动整个应用程序。
二、Docker Compose操作
1、安装 Compose
Compose 有两种常用的安装方式:
(1)使用pip安装Docker Compose(Compose是用python写的)
(2)从GITHUB上的Docker Compose 仓库下载docker-compose二进制文件进行安装。
# 1.curl命令从GitHub上的Docker Compose仓库下载二进制文件 # 语法:curl -L "<GitHub上的Docker Compose仓库网址>" -o /usr/local/bin/docker-compose # 下载实例: [root@docker ~]# curl -L "https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 24.7M 100 24.7M 0 0 39116 0 0:11:03 0:11:03 --:--:-- 55673 # 2.为该二进制文件添加可执行权限 [root@docker ~]# chmod +x /usr/local/bin/docker-compose [root@docker ~]# ll /usr/local/bin/docker-compose -rwxr-xr-x 1 root root 25968640 Jun 7 14:39 /usr/local/bin/docker-compose # 3.进行命令测试 [root@docker ~]# docker-compose --version Docker Compose version v2.6.0
2、卸载Compose
# 如果要卸载,删除docker-compose文件即可 [root@docker ~]# rm /usr/local/bin/docker-compose
三、Compose案例
1、使用Docker Compose 部署 WordPress
WordPress是个人博客系统,逐步演化成一款内容管理系统软件。使用PHP和mysql开发。以部署 WordPress 为例示范使用 Compose进行容器编排的完整过程。
每个服务容器就是服务的一个副本,其名称格式:“项目名_服务名_序号”,序号编排从1开始,不同的序号表示依次分配的副本。
1.定义项目,切换到该项目目录
# Compose项目目录:可根据需要命名,是应用程序镜像的上下文环境,仅包含用于构建镜像的资源。 [root@docker ~]# mkdir my_wordpress && cd my_wordpress [root@docker my_wordpress]#
2.创建并编辑docker-compose.yml 的compose文件来定义项目
# db定义的是mysql服务器,wordpress定义了wordpress博客项目,db_data卷用于保存提交到数据库的数据 [root@docker my_wordpress]# vi docker-compose.yml version: '2.6' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} # 保存退出 #注意事项:version需要与你上面查询版本号一致;端口号8000不可被占用,被占用可修改为别的端口号,访问时需要用配置文件中端口号
3.项目目录中执行docker-compose命令构建项目
# 如果下载过慢可尝试添加云镜像加速器 [root@docker my_wordpress]# docker-compose up -d [+] Running 34/34 ⠿ wordpress Pulled 78.1s ⠿ 42c077c10790 Pull complete 34.1s ⠿ 8934009a9160 Pull complete 34.2s ⠿ 5357ac116991 Pull complete 47.5s ⠿ 54ae63894b5a Pull complete 47.6s ⠿ 772088206f85 Pull complete 49.0s ⠿ 3b81c5474649 Pull complete 49.0s ⠿ c62a528527ae Pull complete 49.1s ⠿ 4386b832d751 Pull complete 49.3s ⠿ 23b4fb100c69 Pull complete 49.4s ⠿ 9339b1ed77ad Pull complete 54.4s ⠿ 6ad6583eba04 Pull complete 54.5s ⠿ 05e5f60f6add Pull complete 54.6s ⠿ 744e7c78b843 Pull complete 54.6s ⠿ d23996fdbd01 Pull complete 62.7s ⠿ e47d68ad6905 Pull complete 63.7s ⠿ 06463c6b8395 Pull complete 63.8s ⠿ 935032d9891a Pull complete 63.9s ⠿ 7b825b5ea5ac Pull complete 64.0s ⠿ 4f882ef71278 Pull complete 72.9s ⠿ ed9050832178 Pull complete 73.0s ⠿ 39f9aa71aa04 Pull complete 73.1s ⠿ db Pulled 121.4s ⠿ c1ad9731b2c7 Pull complete 76.5s ⠿ 54f6eb0ee84d Pull complete 76.6s ⠿ cffcf8691bc5 Pull complete 76.9s ⠿ 89a783b5ac8a Pull complete 77.0s ⠿ 6a8393c7be5f Pull complete 77.1s ⠿ af768d0b181e Pull complete 81.6s ⠿ 810d6aaaf54a Pull complete 81.7s ⠿ 81fe6daf2395 Pull complete 81.8s ⠿ 5ccf426818fd Pull complete 116.1s ⠿ 68b838b06054 Pull complete 116.2s ⠿ 1b606c4f93df Pull complete 116.2s [+] Running 4/4 ⠿ Network my_wordpress_default Created 0.1s ⠿ Volume "my_wordpress_db_data" Created 0.0s ⠿ Container my_wordpress-db-1 Started 2.2s ⠿ Container my_wordpress-wordpress-1 Started 1.3s
4.执行命令查看运行中的容器
[root@docker my_wordpress]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49b78626c20c wordpress:latest "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:8000->80/tcp my_wordpress-wordpress-1 fecf57f4dfd8 mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp my_wordpress-db-1
5.在浏览器访问Wordpress
IP:端口号 # 注意:虚拟机可以访问百度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)