docker-compose任务编排
一、docker-compose介绍
使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
1、docker-compose基础概念
docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。
docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)
docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
- 一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
- 一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
- docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。
二、YAML文件格式及编写
示例yaml文件
1 version: "3" # 版本号,目前使用3 2 services: # 定义服务 3 rms-rcs: # 服务名称,目前是后端服务 4 image: rms-rcs:v1.0.0 # 镜像名称及tag 5 container_name: rms-rcs # 定义容器名称 6 networks: # 选择网络,为了容器之间通讯 7 - "tester" 8 irsp_client: 9 image: irsp_client:v1.0.0 10 container_name: irsp_client 11 networks: 12 - "tester" 13 irweb: 14 image: irweb:v1.0.0 15 container_name: irweb 16 ports: 17 - "80:80" 18 networks: 19 - "tester" 20 networks: # docker创建网络 21 tester: # 新建网络名称 22 driver: bridge # 网络类型,例如:桥接
三、Docker Compose 配置常用字段
| 字段 | 描述 |
| build | 指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定) |
| dockerfile | 构建镜像上下文路径 |
| context | 可以是dockerfile路径,或者时执行git仓库的url地址 |
| images | 指定镜像(已存在) |
| command | 执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令) |
| container_name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。 |
| deploy | 指定部署和运行服务相关配置,只能在swarm模式使用 |
| environment | 添加环境变量 |
| networks | 加入网络,引用顶级networks下条目 |
| network-mode | 设置容器的网络模式 |
| ports | 暴露容器端口,与-p相同,但是端口不能低于60 |
| volumes | 挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称 |
| volumes_from | 从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持) |
| hostname | 在容器内设置内核参数 |
| links | 连接诶到另一个容器,- 服务名称[ : ] |
| privileged | 用来给容器root权限,注意是不安全的,true |
2、Docker-compose常用命令
运行这些命令需要结合docker-compose一起使用。
且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。如果文件名称不是默认名称,可以使用-f参数。
| 命令 | 描述 |
|---|---|
| build | 重新构建服务 |
| ps | 列出容器 |
| up | 创建和启动容器 |
| exec | 在容器里面执行命令 |
| scale | 指定一个服务容器启动数量 |
| top | 显示正在运行的容器进程 |
| logs | 查看服务容器的输出 |
| down | 删除容器、网络、数据卷和镜像 |
| stop/start/restart | 停止/启动/重启服务 |
四、docker-compose安装
docker-compose是docker的独立产品,因此需要安装docker之后再单独安装docker compose。
github访问太慢,没有工具(那种工具)
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
使用国内的即可
然后找到下载位置给添加可执行权限:
cd /user/local/bin
chmod 777 docker-compose # 777给最大权限,如果是生产环境,那就酌情给权限4 2 1,自己算着给
下一节,关于docker network实现容器内部通讯。

浙公网安备 33010602011771号