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
- 成功搭建