/ docker

Docker之Compose服务编排

Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。(进入官方)


常用命令

1. 安装

curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-uname -s-uname -m> /usr/local/bin/docker-compose

2. 编排(docker-compose.yml)

  • version 在version 1里同时使用image和build是不允许的,version 2则可以
  • image 指定镜像tag或者ID
  • build 用来指定一个包含Dockerfile文件的路径
  • command 用来覆盖缺省命令
  • links 用于链接另一容器服务(links:- db),如需要使用到另一容器的mysql服务,可以给出服务名和别名(links:- db:mysql);也可以仅给出服务名,这样别名将和服务名相同(links:- redis)

docker会将links的规定内容直接映射到/etc/hosts文件中去,直接添加解析

  • posts 用于暴露端口,同 docker run -p
  • expose expose提供container之间的端口访问,不会暴露给主机使用,同 docker run --expose
  • volumes 挂载数据卷,同docker run -v
  • volumes_from 挂载数据卷容器,挂载是容器,同docker run --volumes-from
  • environment 添加环境变量,同docker run -e
  • depends_on 用于指定服务依赖,一般是mysql、redis等
  • external_links 链接搭配docker-compose.yml文件或者Compose之外定义的服务,通常是提供共享或公共服务
  • extra_hosts 添加主机名映射

示例1

build:
  context: .
  args:
    buildno: 1
    password: secret

build:
  context: .
  args:
    - buildno=1
    - password=secret

示例2

version: '2'
services:
    web: 
      image: wordpress:latest 
      links: 
        - db
      ports: 
        - "8002:80"
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_PASSWORD: 123456
    db: 
      image: mysql:latest
      environment: 
        - MYSQL_ROOT_PASSWORD=123456

3. 操作指令

$ docker-compose up -d #创建、启动应用,-d守护进程
$ docker-compose stop
$ docker-compose build
$ docker-compose kill
$ docker-compose logs #查看日志的输出