Compose file reference
语法:
web:
     build: ./web
     ports:
     - "5000:5000"
     volumes:
     - .:/code
     links:
     - redis
redis:
     image:redis
build:可使用相对目录或绝对目录
ports:可使用端口范围
links:可使用别名,例如: -redis:web-redis
build
build: ./dir
# build后可直接接Dockerfile所在目录,该目录必须存在Dockerfile
build:
  context: ./dir
  dockerfile: Dockerfile-alternate
  args:
    buildno: 1
image: webapp:tag
# contest指定Dockerfile的目录。dockerfile指定Dockerfile文件名
# args:不清楚
# images:指定dockerfile构建出的镜像名,默认使用docker-compose.yml所在的文件夹名+service名
context
build:
  context: ./dir
#指定Dockerfile所在的目录
dockerfile
build:
  context: .
  dockerfile: Dockerfile-alternate
build: .
dockerfile: Dockerfile-alternate
# 当Dockerfile文件名不是默认名称时,使用dockerfile参数指定Dockerfile的文件名
args
cap_add, cap_drop
Add or drop container capabilities. See man 7 capabilities for a full list.
cap_add:
  - ALL
cap_drop:
  - NET_ADMIN
  - SYS_ADMIN
command
覆盖Dockerfile中的command
command: bundle exec thin -p 3000
# 类似于dockerfile中的命令:
command: [bundle, exec, thin, -p, 3000]
container_name
 指定容器的名称
container_name: my-web-container
depends_on
表示服务之前的依赖关系,有两个效果:
  • docker-compose up,启动web服务之前、启动redis、db。
  • docker-compose up web,启动web容器时,检查依赖depends_on的配置内容,先启动db和redis
'2'
services: 
build: .
    depends_on:
       - db

 
    - redis

  redis:
  
     image: redis
 db:
  
 
  image: postgres
dns
自定义DNS,可以是单个的,也可以是列表.
dns: 8.8.8.8
dns:

 
- 8.8.8.8
  - 9.9.9.9

dns_search

Custom DNS search domains. Can be a single value or a list.

dns_search: example.com
dns_search:

 
- dc1.example.com
  - dc2.example.com

tmpfs
在容器中挂载一个tmpfs。
# tmpfs可以理解成虚拟机磁盘,是创建在内存上,不是在硬盘上。读取速度快,重启后数据消失
run

tmpfs:
  - /run
  - /tmp

entrypoint
覆盖默认的entrypoint.
entrypoint: /code/entrypoint.sh
可以是个列表,类似dockerfile中的语法
entrypoint:
    - php
    - -d
    - zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
    - -d
    - memory_limit=-1
    - vendor/bin/phpunit
env_file
指定变量的文件,默认为docker-compose文件夹下的 .env 文件.
同一个变量,通过export设置,会覆盖env_file中的变量.
env_file: .env

env_file:
  - ./common.env
  - ./apps/web.env

env
environment
设置环境变量,支持数组和字典.
environment:
  RACK_ENV: development
'true'
  SESSION_SECRET:


environment:
  - RACK_ENV=development
 - SHOW=true
 - SESSION_SECRET
expose
暴漏端口,并不会暴漏到宿主机上,而是提供给内部容器通信.
expose:
 - "3000"
 - "8000"
extends、

external_links
待补充
extra_hosts
添加主机映射. Use the same values as the docker client --add-host parameter.
extra_hosts:
 - "somehost:162.242.195.82"

- "otherhost:50.31.209.229"
映射结果会体现在 /etc/hosts
:
162.242.195.82 
somehost
50.31.209.229   otherhost
image
指定基础镜像. 可以是镜像名称、镜像ID。
version1中不允许build和image同时出现,version2中允许,image代表指定build之后的镜像名称。
image: redis
image: ubuntu:14.04image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
labels
指定容器的标签.
labels:
  com.example.description: "Accounting webapp"
  com.example.department: "Finance"
  com.example.label-with-empty-value: ""

labels:
  - "com.example.description=Accounting webapp"
  - "com.example.department=Finance"
  - "com.example.label-with-empty-value"

links
连接其他容器,可以设置别名,设置link之后,hostname与IP的对应关系会写入到 /etc/hosts中. 和depend_on类似,设置link后,也间接的规定了容器的启动顺序.
web:
  links:
  - db
 - redis
logging
设置容器的日志驱动.version 2 通过logging替换log_driver和log_opt
 options:
 
 syslog-address: "tcp://192.168.0.42:123"

net

Version 1 file format only. In version 2, use network_mode.
为容器指定网络类型,version 1专用,version 2使用network_mode.
net: "bridge"
net: "host"
net: "none"
net: "container:[service name or container name/id]"

network_mode

Version 2 file format only. In version 1, use net.
为容器指定网络类型.
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

networks

Version 2 file format only. In version 1, use net.

Networks to join, referencing entries under the top-level networks key.
services:
  some-service:
    networks:
     - some-network
     - other-network
aliases
待补充
ipv4_address, ipv6_address
指定容器的IP地址等,用法待补充,未操作
pid
通过设置,容器可通过ps查询宿主机的进程.
pid: "host"
ports
暴漏容器的端口,可设置为8080:8080 或 :8080(宿主机端口随机).
Note:建议使用引号
ports:
 - "3000"
 - "3000-3005"
 - "8000:8000"
 - "9090-9091:8080-8081"
 - "49100:22"
 - "127.0.0.1:8001:8001"
 - "127.0.0.1:5000-5010:5000-5010"
stop_signal
待补充
ulimits
设置ulimit值,可替换掉docker或dockerfile默认的值.
ulimits:
  nproc: 65535
  nofile:
    soft: 20000
    hard: 40000
volumes, volume_driver
挂载卷,如果不指定宿主机目录,会在volume默认目录创建挂载点。可单独挂载文件、可设置目录权限.  。
volumes:
  # Just specify a path and let the Engine create a volume
  - /var/lib/mysql

# Specify an absolute path mapping
  - /opt/data:/var/lib/mysql

# Path on the host, relative to the Compose file
  - ./cache:/tmp/cache

# User-relative path
  - ~/configs:/etc/configs/:ro

# Named volume

var/lib/mysql
   # datavolume是通过docker volume create --name datavolume创建
如果不使用宿主机存储,须臾奥指定
volume_driver
.例如rancher的convoy fs。
volume_driver: mydriver
volumes_from
从其他服务或容器挂载所有的volume, 可设置制度访问 (ro)或读写 (rw). 如果不设置,默认为读写模式。
volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

Note: The Container:... formats are only supported in the version 2 file format. In version 1, you can use container names without marking them as such:

- service_name
- service_name:ro
- container_name
- container_name:rw

cpu_shares, cpu_quota, cpuset, domainname, hostname, ipc,
mac_address, mem_limit, memswap_limit, privileged, read_only, restart,
shm_size, stdin_open, tty, user, working_dir

单独的值,类似于docker run的参数.
cpu_shares: 73
cpu_quota: 50000
cpuset: 0,1
user: postgresql
working_dir: /code
domainname: foo.com
hostname: foo
ipc: host
mac_address: 02:42:ac:11:65:43
mem_limit: 1000000000
memswap_limit: 2000000000
privileged: true
restart: always
read_only: true
shm_size: 64M
stdin_open: true
tty: true
Volume configuration reference
driver
设置volume的驱动,默认是local.
 driver: foobar
driver_opts
设置驱动的参数,不同的驱动所需要的参数不同.可选.
 driver_opts:
   foo: "bar"
   baz: 1
external
如果设置为true,指定volume在compose的外部,docker-compose up 时不去创建该volume。如果不存在报错.
version: '2'
services:
  db:
    image: postgres
    volumes:
      - data:/var/lib/postgresql/data
volumes:
  data:
    external: true

You can also specify the name of the volume separately from the name used to refer to it within the Compose file:

volumes:
  data:
    external:
      name: actual-name-of-volume
A more extended example, defining volumes and networks:
version: '2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
    networks:
      - front-tier
      - back-tier
  redis:
    image: redis
    volumes:
      - redis-data:/var/lib/redis
    networks:
      - back-tier
volumes:
  redis-data:
    driver: local
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge
version: '2'
services:
  db:
    image: postgres
    volumes:
      - data:/var/lib/postgresql/data
volumes:
  data: {}

Docker Compose文件详解 V2的更多相关文章

  1. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  2. 附003.Docker Compose命令详解

    一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...

  3. Docker Compose配置文件详解(V3)

    Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...

  4. Docker Compose 配置文件详解

    先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...

  5. docker entrypoint入口文件详解

    docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...

  6. Docker学习(六)——Dockerfile文件详解

    Docker学习(六)--Dockerfile文件详解 一.环境介绍 1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录 ...

  7. k8s之yaml文件详解

    k8s之yaml文件详解 目录 k8s之yaml文件详解 1. k8s支持的文件格式 2. YAML语言格式 3. 查看api资源版本标签 4. 编写nginx-test.yaml资源配置清单 4.1 ...

  8. web.xml文件详解

      web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...

  9. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

随机推荐

  1. 面向对象第二个特征-继承(Inheritance)

    面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这 ...

  2. Airflow 使用 Celery 时,如何添加 Celery 配置

    背景 前段时间我选用了 Airflow 对 wms 进行数据归档,在运行一段时间后,经常发现会报以下错误: [-- ::,: WARNING/ForkPoolWorker-] Failed opera ...

  3. 当spring单元测试需要用到临时表的时候

    需要将整个单元测试的方法交给spring的事务管理器控制. 两种解决方法: 1.加载的spring配置文件中advice要切到需要测试的方法. 2.单元测试类继承AbstractTransaction ...

  4. MySQL表连接原理

    以下文章均来自掘金小测: https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c061b0cf265da612577e0f4 表连接本质: ...

  5. C# 基本元素

    一.构成C#的基本元素 注释和空白编译器不会编译,自动忽略:而标记是可以通过编译器编译的. 关键字 (keyword) 官方定义:关键字是类似标识符的保留的字符序列,不能用作标识符(以 @ 字符开头时 ...

  6. 深入理解C指针<一>

    指针和内存 C程序在编译后,会以三种形式使用内存: 静态.全局内存:静态变量和全局变量使用这部分内存,生存周期为整个程序运行时,全局变量所有函数都可以访问,但静态变量虽然生存周期为整个程序运行时,但作 ...

  7. 尝试用kotlin做一个app(写在前面)

    学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...

  8. Vue 项目de一些准备工作

    1.安装node,同时也会自动安装npm,npm是node的一种包安装工具. 2.准备一个git,可以用来管理代码. 3.打开vue官网,可以使用vue-cli脚手架工作. 这里介绍一个element ...

  9. 面试题:你使用过concurrent包下的那些类?

    1.executor接口,使用executor接口的子接口ExecutorService用来创建线程池2.Lock接口下的ReentrantLock类,实现同步,比如三个线程循环打印ABCABCABC ...

  10. UML-架构分析-步骤

    1.识别->因素表 2.解决->技术备忘录 1).可靠性 2).法律问题 3).可适应性