1.简介

 

  Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程

  Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

  docker-compose 是用来做docker的多容器控制,有了docker-compose你可以把所有的复杂的docker操作全都用一条命令自动化完成。

Compose的优点 

  平时在运行docker的时候,运行一个镜像就会有一个search,pull,run等命令,显然是非常累的,如果大规模的进行部署,会非常的麻烦。有了docker-compose,就可以批量的部署和管理容器

  Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

2.什么是部署和编排

编排,即orchestration,它根据被部署的对象之间的耦合关系,以及被部署对象环境的依赖,制定部署流程中各个动作的执行顺序,部署过程所需要的依赖文件的存储位置和获取方式,以及如何验证部署成功。这些信息都会在编排工具中以指定的格式(比如配置文件或者特定的代码)来要求运维人员定义并保存起来,从而保证这个流程能够随时在全新的环境中可靠有序地重现出来。

部署,即deployment,它是指按照编排所指定的内容和流程 ,在目标机器上执行编排指定环境初始化,存放指定的依赖和文件,运行指定的部署动作,最终按照编排中的规则来确认联署成功。

3.常用命令

  • build(构建yml中某个服务的镜像)
    如上,web这个服务是依赖于镜像build的。在本地 也存在Dockerfile文件。
    可以使用docker-compose build来构建服务的镜像。
  • ps(查看已经启动的服务状态)
  • kill(停止某个服务)
  • logs(可以查看某个服务的log)
  • port(打印绑定的public port)
  • pull(pull服务镜像)
  • up(启动yml定义的所有服务)
  • stop(停止yml中定义的所有服务)
  • start(启动被停止的yml中的所有服务)
  • kill(强行停止yml中定义的所有服务)
  • rm(删除yml中定义的所有服务)
  • restart(重启yml中定义的所有服务)
  • scale(扩展某个服务的个数,可以向上或向下)
  • migrate-to-labels(这个没有实际尝试。根据介绍是将服务从1.2迁移到1.3带labels的版本。docker之前不支持label)
  • version(查看compose的版本)

docker-compose构建

  • 下载稳定版本的docker-compose(从github上下载docker-compose二进制文件安装)
[root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 添加可执行权限
[root@localhost ~]# sudo chmod +x /usr/local/bin/docker-compose
  • 查看版本号(docker-compose基本环境搭建成功)
[root@localhost ~]# docker-compose --version
docker-compose version 1.24.1, build 4667896b
  • compose软件包链接:https://pan.baidu.com/s/1RFyqVE8wDBIibXotjENYgQ
    提取码:4hbv
  • [root@localhost ~]# unzip compose_lnmp-190606.zip

    [root@localhost ~]# cd compose_lnmp/
    [root@localhost compose_lnmp]# ls
    docker-compose.yml mysql nginx php wwwroot
      
  • 将  compose_lnmp/nginx/nginx.conf中的IP地址进行修改,成为自己的IP 
  • 构建compose  
  • [root@localhost compose_lnmp]# docker-compose -f docker-compose.yml up -d
    compose_lnmp_php_1 is up-to-date
    compose_lnmp_nginx_1 is up-to-date
    compose_lnmp_mysql_1 is up-to-date
      
  • 查看容器(有三个,说明创建成功)
[root@localhost compose_lnmp]# docker-compose ps
        Name                 Command          State          Ports        
--------------------------------------------------------------------------
compose_lnmp_mysql_1   docker-entrypoint.sh   Up      0.0.0.0:3306->3306/t
                       --cha ...                      cp                  
compose_lnmp_nginx_1   /run.sh                Up      0.0.0.0:80->80/tcp  
compose_lnmp_php_1     ./sbin/php-fpm -c      Up      0.0.0.0:9000->9000/t
                       /usr/loc ...                   cp                  
[root@localhost compose_lnmp]# docker-compose ps
        Name                      Command               State           Ports         
--------------------------------------------------------------------------------------
compose_lnmp_mysql_1   docker-entrypoint.sh --cha ...   Up      0.0.0.0:3306->3306/tcp
compose_lnmp_nginx_1   /run.sh                          Up      0.0.0.0:80->80/tcp    
compose_lnmp_php_1     ./sbin/php-fpm -c /usr/loc ...   Up      0.0.0.0:9000->9000/tcp
  • 成功搭建