功能
Docker Compose 是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器.
安装
1 2 3
| curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose -version
|
常用命令
需要在docker-compose.yml存在的当前目录中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| docker-compose up -d docker-compose ps --verbose:输出详细信息 -f 制定一个非docker-compose.yml命名的yaml文件 -p 设置一个项目名称(默认是directory名) build:构建服务 kill -s SIGINT:给服务发送特定的信号。 logs:输出日志 port:输出绑定的端口 ps:输出运行的容器 pull:pull服务的image rm:删除停止的容器 run: 运行某个服务,例如docker-compose run web python manage.py shell start:运行某个服务中存在的容器 stop:停止某个服务中存在的容器 restart:重启相关容器 up:create + run + attach容器到服务 scale:设置服务运行的容器数量。例如:docker-compose scale web=2 worker=3
|
yml语法
compose-file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| image :镜像id build:直接从pwd的Dockerfile来build,而非通过image选项来pull container_name:容器名称 restart: always 重启 links:连接到那些容器,该yaml文件中的容器,会将相关信息存放在/etc/hosts external_links:连接到该compose.yaml文件之外的容器中,同links depends_on:依赖关系说明 command:执行command命令 ports:导出端口,如:ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001" expose:导出端口,但不映射到宿主机的端口上。它仅对links的容器开放 volumes:加载路径作为卷,可以指定只读模式 volumes_from:加载其他容器或者服务的所有卷 env_file:从一个文件中导入环境变量,文件的格式为RACK_ENV=development environment:设置环境变量的值 extends:扩展另一个服务,可以覆盖其中的一些选项 net:容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个 dns:可以设置一个或多个自定义的DNS地址 dns_search:dns搜索的域名 logging:日志配置
|
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| version: '2' services: log: image: vmware/harbor-log container_name: harbor-log restart: always volumes: - /var/log/harbor/:/var/log/docker/ ports: - 1514:514 registry: image: library/registry:2.5.0 container_name: registry restart: always volumes: - /data/registry:/storage - ./common/config/registry/:/etc/registry/ environment: - GODEBUG=netdns=cgo command: ["serve", "/etc/registry/config.yml"] depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "registry"
|