`
m635674608
  • 浏览: 5041728 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Docker Compose文件详解 V2

 
阅读更多
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
version: '2'
services: 
web:
   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_searchexample.com
dns_search:
  - dc1.example.com
  - dc2.example.com
tmpfs
在容器中挂载一个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
  - /opt/secrets.env
environment
设置环境变量,支持数组和字典.
environment:
  RACK_ENV: development
  SHOW: '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
  - db:database - redis
logging
设置容器的日志驱动.version 2 通过logging替换log_driver和log_opt
logging:
  driver:syslog
 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
  - datavolume:/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: {}
http://blog.csdn.net/wanghailong041/article/details/52162275
http://blog.csdn.net/gezhonglei2007/article/details/51627969
分享到:
评论

相关推荐

    docker-compose配置文件中文详解

    docker-compose配置文件中文详解Compose和Docker兼容性: Compose 文件格式有3个版本,分别为1, 2.x 和 3.x 目前主流的为 3.x 其支持 docker 1.13.0 及其以上的版本常用参数: version # 指定 compose 文件的版本 ...

    Dockerfile及Docker-compose yml格式详解

    Dockerfile 组成结构、编写规范、注意事项、常用命令 及Docker-compose yml详解

    docker&docker-compose 19.03.14二进制安装

    5. **安装Docker Compose**:将Docker Compose的可执行文件链接到系统的PATH路径下,例如`ln -s /path/to/docker-compose /usr/local/bin/docker-compose`。 6. **验证安装**:最后,通过`docker-compose --version`...

    docker-compose安装包

    Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、...

    docker-compose Linux安装包(压缩包中含V1.29.2和V2.2.2两个版本)

    1. Docker Compose V1.29.2:这是较旧的一个版本,支持YAML文件的v2格式。它提供了一系列的命令行选项,如`docker-compose up`用于启动所有服务,`docker-compose down`用于停止并删除服务及关联的网络等。此外,此...

    docker-compose文件详解

    docker-compose文件详解

    docker-compose-Darwin-x86_64.tgz

    【压缩包子文件的文件名称列表】中的文件包含了Docker Compose运行所需的各种库和组件: 1. `docker-compose`:这是Docker Compose的可执行文件,用于执行各种管理命令。 2. `libcrypto.1.1.dylib` 和 `libssl.1.1....

    DockerCompose(博客所需资源).rar

    DockerCompose(博客所需资源)

    docker-compose_install.tar.gz

    这个压缩文件提供了在没有网络连接或者网络环境受限的情况下,安装 Docker 和 Docker Compose 的便捷方式。 【Docker】是目前非常流行的容器化技术,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,...

    docker-compose-linux-aarch64

    这可能意味着压缩包内包含了一个文件夹,其中可能存放了Docker Compose的二进制文件,例如`docker-compose`可执行文件,以及其他可能的配置文件或文档。用户在解压后,通常需要将`docker-compose`放到系统的PATH环境...

    最新版Docker20+dockerCompose2.2离线一键安装

    适用于Linux的Docker version 20.10.12, build e91ed57和Docker Compose version v2.2.2离线自动安装包。unzip解压后,进入解压出来的docker_x86_64目录,运行sudo bash install.sh docker-20.10.12.tgz 。自动运行...

    docker-compose v2.5.0版本安装包

    内含两个文件,一个是二进制程序包,一个是install.sh安装脚本。 解压这个压缩包,将解压后的文件夹上传到Linux,然后系统管理员执行命令bash install.sh 出现以下字段表示安装成功了 Docker Compose version v2.5.0...

    Go-ComposeonKubernetes允许您将DockerCompose文件部署到Kubernetes集群上

    Go-Compose on Kubernetes 是一个工具,它扩展了Docker Compose的功能,使得开发者可以将原本为Docker容器设计的Compose文件无缝地应用到Kubernetes集群上。这个项目旨在简化从本地Docker开发环境向Kubernetes生产...

    docker-compose 配置详解-docker img制作-docker 操作手册

    1、docker-compose 配置详解 2、docker-img制作 3、docker 操作手册

    Docker-compose 教程全集 PDF 53页

    Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环 境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务, 每个服务中定义了容器运行的镜像,参数...

    bitnami版本的zookeeper和kafka的docker-compose配置

    这个Docker Compose 文件定义了一个包含Zookeeper和三个Kafka节点的服务集群。通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的...

    docker compose部署redis集群

    docker compose部署redis集群,三主三从,并且外网可以访问,另外还可以从gitee上获取此文件,gitee上除了Redis之外还会陆续提供其他docker部署的文件,https://gitee.com/korov/Docker.git

    docker-compose.tar

    1)解压后将docker-compose上传至服务器/usr/bin目录下 2)chmod + 755 docker-compose 3)docker-compose可以直接运行了

    最新版本docker-compose v2.10.2

    解决不支持docker-compose命令的问题,而从gihub下载缓慢,适用于x87_64的linux系统,

Global site tag (gtag.js) - Google Analytics