docker compose容器编排

DockerCompose是Docker的官方编排工具,通过一个yaml配置文件简化了多容器应用程序的部署,使得用户可以一键启动所有服务。它以项目为单位管理服务,如MySQL和WordPress,提供了一种声明式的方式来定义和运行应用,提高了部署效率。
摘要由CSDN通过智能技术生成

一、Docker Compose概念

Docker Compose (可简称Compose)是一个定义与运行复杂应用程序的 Docker 工具,是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

1、为什么要使用 Docker Compose部署容器

仅使用docker命令部署和管理多容器:应用程序时往往需要编写若干脚本文件,使用的命令可能会变得冗长,包括大量的选项和参数,配置过程比较复杂,而且容易发生差错。

Docker Compose实质:不是通过脚本和各种docker命令将多个容器组织起来,而是通过一个声明式的配置文件描述整个应用程序,从而让用户使用一条命令即可完成整个应用程序的部署。

Docker Compose功能:将逻辑关联的多个容器编排为一个整体进行统一管理,提高了应用程序部署效率。

2、Docker Compose项目概念

Docker Compose 以项目为单位管理应用程序的部署。按从上到下依次分为以下三个层次。

项目:一组关联的容器组成一个完整的业务单位,实现一个应用程序,涵盖应用程序所需的所有资源。

服务:具体定义容器运行的镜像、

容器:

3、使用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  62821      0  0:06:53  0:06:53 --:--:-- 1494k


#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 16:29 /usr/local/bin/docker-compose

#3.进行命令测试
[root@hecs-hqs-01 ~]# 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
[root@docker ~]# 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: {}

#3.项目目录中执行docker-compose命令构建项目
[root@docker my_wordpress]# docker-compose up -d
[+] Running 34/34
 ⠿ wordpress Pulled                                                                                                                                               41.3s
   ⠿ a2abf6c4d29d Pull complete                                                                                                                                    7.9s
   ⠿ c5608244554d Pull complete                                                                                                                                    8.0s
   ⠿ 2d07066487a0 Pull complete                                                                                                                                   20.0s
   ⠿ 1b6dfaf1958c Pull complete                                                                                                                                   20.1s
   ⠿ 32c5e6a60073 Pull complete                                                                                                                                   21.0s
   ⠿ 90cf855b27cc Pull complete                                                                                                                                   21.1s
   ⠿ 8b0f1068c586 Pull complete                                                                                                                                   23.0s
   ⠿ 5355461305e8 Pull complete                                                                                                                                   23.0s
   ⠿ ad1eec592342 Pull complete                                                                                                                                   23.0s
   ⠿ e03fbc76cb78 Pull complete                                                                                                                                   23.0s
   ⠿ 1f5796e48b39 Pull complete                                                                                                                                   23.0s
   ⠿ 72fbe8e1d4e7 Pull complete                                                                                                                                   23.0s
   ⠿ 96edece66175 Pull complete                                                                                                                                   23.0s
   ⠿ 5f46f0743de2 Pull complete                                                                                                                                   23.4s
   ⠿ c9f9671a5e1f Pull complete                                                                                                                                   24.1s
   ⠿ 3f543dcd35b1 Pull complete                                                                                                                                   24.2s
   ⠿ c88e21a0c2a0 Pull complete                                                                                                                                   24.3s
   ⠿ 964b4457a910 Pull complete                                                                                                                                   24.4s
   ⠿ 0d55fb9a64ef Pull complete                                                                                                                                   25.5s
   ⠿ fb009ff7c567 Pull complete                                                                                                                                   25.6s
   ⠿ 4f058a67a50d Pull complete                                                                                                                                   25.6s
 ⠿ db Pulled                                                                                                                                                      17.6s
   ⠿ 72a69066d2fe Pull complete                                                                                                                                    6.7s
   ⠿ 93619dbc5b36 Pull complete                                                                                                                                    6.8s
   ⠿ 99da31dd6142 Pull complete                                                                                                                                    7.4s
   ⠿ 626033c43d70 Pull complete                                                                                                                                    7.5s
   ⠿ 37d5d7efb64e Pull complete                                                                                                                                    7.6s
   ⠿ ac563158d721 Pull complete                                                                                                                                    8.6s
   ⠿ d2ba16033dad Pull complete                                                                                                                                    8.7s
   ⠿ 0ceb82207cd7 Pull complete                                                                                                                                    8.8s
   ⠿ 37f2405cae96 Pull complete                                                                                                                                   16.7s
   ⠿ e2482e017e53 Pull complete                                                                                                                                   16.8s
   ⠿ 70deed891d42 Pull complete                                                                                                                                   16.9s
[+] Running 2/2
 ⠿ Container my_wordpress-db-1         Started                                                                                                                     0.5s
 ⠿ Container my_wordpress-wordpress-1  Started                                                                                                                     0.9s


#4.执行命令查看运行中的容器
[root@docker my_wordpress]# docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED         STATUS         PORTS                  NAMES
1e515de5227a   wordpress:latest   "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   0.0.0.0:8000->80/tcp   my_wordpress-wordpress-1
dac849646e5a   mysql:5.7          "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   3306/tcp, 33060/tcp    my_wordpress-db-1



#5.在浏览器访问Wordpress
ip:8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值