docker-compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服务。
使用Compose 基本上分为三步过程:
-
Dockerfile 定义应用的运行环境
-
docker-compose.yml 定义组成应用的各服务
-
docker-compose up 启动整个应用
Docker Compose 工作原理图
Compose中几个重要的概念:
- 任务(task):一个容器被称为一个任务,任务拥有独一无二的ID,在同一个服务中的多个任务序号依次递增。
- 服务(serveice):某个相同应用镜像的容器副本集合,一个服务可以横向拓展为多个容器实例。
- 服务栈(stack):由多个服务组成,相互配合完成特定业务,如web应用服务,数据库服务共同构成web服务栈,一般由一个docker-compose.yml文件定义。compose的默认管理对象是服务栈,通过子命令对栈中的多个服务进行便捷的生命周期管理。
Compose项目有python编写,实际上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
Docker-Compose安装
1、使用二进制安装
#下载安装 curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose #查看版本 [[email protected] ~]# docker-compose version docker-compose version 1.23.2, build 1110ad01 docker-py version: 3.6.0 CPython version: 3.6.7 OpenSSL version: OpenSSL 1.1.0f 25 May 2017 #卸载 rm /usr/local/bin/docker-compose
2、安装bash命令补全
yum install -y bash-completion curl -L https://raw.githubusercontent.com/docker/compose/1.23.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
创建Web负载均衡服务栈
1、创建一个Haproxy负载均衡,后端挂载三个web服务容器。使用python程序实现简单的web应用,响应http请求,返回的页面将打印出访问者的IP和响应请求的后端容器的IP。相关代码见yesay
服务栈的目录树及相关文件:
[[email protected] ~]# tree haproxy_web/ haproxy_web/ ├── docker-compose.yml ├── haproxy │ └── haproxy.cfg └── web ├── Dockerfile ├── index.html └── index.py
2、在后台运行启动容器
[[email protected] haproxy_web]# docker-compose up -d
3、查看启动的服务
[[email protected] haproxy_web]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------- haproxy_web_haproxy_1 /docker-entrypoint.sh hapr ... Up 0.0.0.0:70->70/tcp, 0.0.0.0:80->80/tcp haproxy_web_weba_1 /bin/sh -c python index.py Up 80/tcp haproxy_web_webb_1 /bin/sh -c python index.py Up 80/tcp haproxy_web_webc_1 /bin/sh -c python index.py Up 80/tcp
4、访问本地80端口,刷新页面可以查看到后端容器ip的变化,以及70端口负载的统计信息
Docker-compose.yml模板文件的参数命令参考:Compose file reference
Docker:从入门到精通 yaml模板文件
Docker-Compose常用命令
命令 | 说明 |
docker-compose build | 建立或者重建服务 |
docker-compose bundle | 创建一个可分发的配置包,包括整个服务栈的所有数据 |
docker-compose config | 验证和查看Compose文件 |
docker-compose create | 创建服务 |
docker-compose down | 停止和删除容器,网络,镜像和卷 |
docker-compose events | 从容器接收实时事件 |
docker-compose exec | 登录正在运行的容器执行命令 |
docker-compose images | 镜像列表 |
docker-compose kill | 杀掉容器 |
docker-compose logs | 查看容器的输出 |
docker-compose pause | 暂停容器 |
docker-compose port | 为端口绑定打印公共端口 |
docker-compose ps | 容器列表 |
docker-compose pull | 下载服务镜像 |
docker-compose push | 上传服务镜像 |
docker-compose restart | 重启容器 |
docker-compose rm | 删除停止的容器 |
docker-compose run | 运行一次性的命令 |
docker-compose scale | 设置服务的容器数量 |
docker-compose start | 启动服务 |
docker-compose stop | 停止服务 |
docker-compose top | 显示运行过程 |
docker-compose unpause | 暂停服务 |
docker-compose up | 创建并启动容器 |