Docker Compose容器编排

一、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:端口号
# 注意:虚拟机可以访问百度

posted @ 2022-06-07 17:18  郑琰  阅读(181)  评论(0编辑  收藏  举报
#

# #