首页 > 代码库 > docker-compose

docker-compose

最近几个项目中都用到了compose,这里整理了一下compose的相关信息;
https://docs.docker.com/compose/

功能:
Docker Compose 是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器.
安装:

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存在的当前目录中)

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

docker-compose.yml 语法说明
https://docs.docker.com/compose/compose-file/

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:日志配置

这里以harbor项目的docker-compose.yml中的部分内容来作说明;
github地址:https://github.com/vmware/harbor

version: ‘2‘    #指定compose版本
services:
  log:    #服务名称
    image: vmware/harbor-log    #指定镜像名称
    container_name: harbor-log  #启动后的容器名称
    restart: always    #down掉自动重启
    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"    #日志标签

本文出自 “天天向上goto” 博客,请务必保留此出处http://ttxsgoto.blog.51cto.com/4943095/1872288

docker-compose