docker-compose.yml知多少

参数介绍:

0).yml中顶级的配置项:

version 定义了版本信息

services 定义了服务的配置信息,包含应用于该服务启动的每个容器的配置

networks 定义了网络信息,提供给 services 中的 具体容器使用,类似于命令行的 docker network create

volumes 定义了卷信息,提供给 services 中的 具体容器使用,类似于命令行的 docker volume create


1)version:指定 docker-compose.yml 的版本

V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml

V1 版本的 docker-compose.yml 文件格式主要区别就是: 

- 没有开头的 version 声明 

- 没有 services 声明 

- 不支持 depends_on 

- 不支持命名的 volumes, networks, build arguments 声明 

V2版本仅支持单机模式

V3版本支持单机模式也支持多机模式

2)services:多个容器集合,它有多个子集,该子集是自定义的容器。

services:包含过个实例的service的定义

3.0) tty: true

默认给容器一个虚拟终端

3)image:指定服务所使用的镜像,如果本地不存在,拉取镜像

image: mysql:5.7

3.1)build 基于dockerfile文件构建镜像

build: /path/to/build/dir

可以是相对路径,只要上下文确定就可以读取到Dockerfile。

build: ./dir

设定上下文根目录,然后以该目录为准指定Dockerfile。

如果同时指定image和build两个标签,那么Compose会构建镜像并且把镜像命名为image值指定的名字。

build

4)volumes:卷挂载路径

volumes: 

     - 本地的目录名称:容器中的目录名称

4)volumes_from,从另一个服务或容器挂载其数据卷

从另一个服务或容器挂载其数据卷

5)restart: always|no|on-failure| unless-stopped (3.7中已经被RESTART_POLICY)

restart: "no"         # no是默认的重启策略在任何情况下都不会重启容器。 

restart: always     # 指定为always时,容器总是重新启动

restart: on-failure   # 如果退出代码指示出现故障错误,则on-failure将重新启动容器

restart: unless-stopped

6)RESTART_POLICY

配置是否以及如何在容器退出时重新启动容器。取代 restart

RESTART_POLICY

condition:一个none,on-failure或any(默认:) any。

delay:重新启动尝试之间等待的时间,指定为 持续时间(默认值:0)。

max_attempts:在放弃之前尝试重启容器的次数(默认值:永不放弃)。如果在配置中未成功重新启动 window,则此尝试不会计入配置的max_attempts值。例如,如果max_attempts设置为“2”,并且第一次尝试时重新启动失败,则可能尝试重新启动两次以上。

window:在决定重启是否成功之前等待多长时间,指定为持续时间(默认值:立即决定)。

7)environment:环境变量配置,可以用数组或字典两种方式

environment

任何布尔值: true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False

如果服务指定了build选项,那么在构建过程中通过environment定义的环境变量将不会起作用。

将使用build的args子选项来定义构建时的环境变量。

8)depends_on

解决容器的依赖、启动先后的问题

depends_on:

      - db

      - redis

实例中先启动容器 db 和 redis 再启动 web,注意:web 服务不会等待 redis 和 db 「完全启动」之后才启动

9)ports:映射端口信息

ports:映射端口信息

使用:

宿主端口:容器端口 (即:HOST:CONTAINER) 的格式格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。

注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 并且没放到引号里,可能会得到错误结果,因为 YAML 会自动解析 xx:yy 这种数字格式为 60 进制。为避免出现这种问题,建议数字串都采用引号包括起来的字符串格式

10)expose  ----->暴露端口,但不映射到宿主机,只被连接的服务访问

仅可以指定容器内部的端口为参数

expose:

     - "3000"

     - "8000"

11)container_name指定容器的名称,默认将会使用 项目名称服务名称序号 这样的格式

container_name: docker-web-container

注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称

12)labels 为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息

labels:

    com.startupteam.description:"webapp for a startupteam"

    com.startupteam.department:"devops department"

    com.startupteam.release:"rc3 for v1.0"

13)extra_hosts    --->类似 Docker 中的 --add-host 参数,指定额外的 host 名称映射信息

extra_hosts:

- "googledns:8.8.8.8"

- "dockerhub:52.1.157.61"

会在启动后的服务容器中 /etc/hosts 文件中添加如下两条条目:

8.8.8.8 googledns 

52.1.157.61 dockerhub

14)alias 别名

格式如下:

alias 别名

网络上此服务的别名(备用主机名)。同一网络上的其他容器可以使用服务名称或此别名连接到其中一个服务的容器。

由于aliases是网络范围的,因此相同的服务可以在不同的网络上具有不同的别名。

注意:网络范围的别名可以由多个容器共享,甚至可以由多个服务共享。如果是,则无法保证名称解析为的容器。

15)dns :自定义DNS服务器,可以是一个值,也可以是一个列表

自定义DNS服务器

16)dns_search:配置 DNS 搜索域,可以是一个值或列表

配置 DNS 搜索域

17)entrypoint类比dockerfile中的entrypoint:

在docker-compose.yml中可以定义接入点,覆盖Dockerfile中的定义:

entrypoint: /code/entrypoint.sh

18)command:覆盖容器启动后默认执行的命令

command: [bundle,exec,thin,-p,3000]

19)env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量

env_file: .env

env_file:   

       - ./common.env

20)network


21)links

links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况

links:    # 指定服务名称:别名    - docker-compose-eureka-server:compose-eureka

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容