附005.Docker Compose文件详解
一 Docker Compose文件简介
- version:用于指定当前docker-compose.yml语法遵循哪个版本
- services:服务,在它下面可以定义应用需要的一些服务,每个服务都有自己的名字、使用的镜像、挂载的数据卷、所属的网络、依赖哪些其他服务等等。
- networks:应用的网络,在它下面可以定义应用的名字、使用的网络类型等。
- volumes:数据卷,在它下面可以定义数据卷,然后挂载到不同的服务下去使用。
二 Docker Compose文件详解
2.1 version字段
|
Compose文件格式
|
Docker Engine版本
|
|
3.7
|
18.06.0+
|
|
3.6
|
18.02.0+
|
|
3.5
|
17.12.0+
|
|
3.4
|
17.09.0+
|
|
3.3
|
17.06.0+
|
|
3.2
|
17.04.0+
|
|
3.1
|
1.13.1+
|
|
3.0
|
1.13.0+
|
|
2.4
|
17.12.0+
|
|
2.3
|
17.06.0+
|
|
2.2
|
1.13.0+
|
|
2.1
|
1.12.0+
|
|
2.0
|
1.10.0+
|
|
1.0
|
1.9.1.+
|
2.2 services区域
version: '3'
services:
webapp:
build: ./dir
image: webapp:tag
web:
links:
- db
- db:database
- redis
172.17.2.100 db
172.17.2.100 database
172.17.2.100 redis
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
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"
- "6060:6060/udp"
ports:
- target: 80
published: 8080
protocol: tcp
mode: host
- target:容器内的端口
- published:公开暴露的港口
- protocol:端口协议(tcp或udp)
- mode:host用于在每个节点上发布主机端口,或者ingress用于负载平衡的群集模式端口。
expose:
- "3000"
- "8000"
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
env_file: .env env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
services:
some-service:
env_file:
- a.env
- b.env
version: '3'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
- docker-compose up:以依赖顺序启动服务,在以上示例中,db和redis之在web之前启动。
- docker-compose up SERVICE:自动包含SERVICE依赖项。在以上示例中,docker-compose up web还创建并启动db和redis。
version: '3'
services:
redis:
image: redis:alpine
deploy:
labels:
com.example.description: "This label will appear on all containers for the web service"
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
replicas: 6
update_config:
parallelism: 2
delay: 10s
update_config:
parallelism: 2
delay: 10s
order: stop-first
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
- condition:其中之一none,on-failure或any(默认:) any。
- delay:重新启动尝试之间等待的时间,指定为持续时间(默认值:0)。
- max_attempts:在放弃之前尝试重新启动容器的次数(默认值:永不放弃)。如果在配置中未成功重新启动 window,则此尝试不会计入配置的max_attempts值。例如,如果max_attempts设置为“2”,并且第一次尝试时重新启动失败,则可能会尝试重新启动两次以上。
- window:在决定重启是否成功之前等待多长时间,指定为持续时间(默认值:立即决定)。
- parallelism:一次回滚的容器数。如果设置为0,则所有容器同时回滚。
- delay:每个容器组的回滚之间等待的时间(默认为0)。
- failure_action:如果回滚失败该怎么办。一个continue或pause(默认pause)
- monitor:每次更新任务后的持续时间以监视失败(ns|us|ms|s|m|h)(默认为0)。
- max_failure_ratio:回滚期间容忍的失败率(默认值为0)。
- order:回滚期间的操作顺序。其中之一stop-first(旧任务在启动新任务之前停止),或者start-first(首先启动新任务,并且正在运行的任务暂时重叠)(默认stop-first)。
- parallelism:一次更新的容器数。
- delay:更新一组容器之间的等待时间。
- failure_action:更新失败时的行为。其中一个continue,rollback或者pause (默认:pause)。
- monitor:每次更新任务后的持续时间以监视失败(ns|us|ms|s|m|h)(默认为0)。
- max_failure_ratio:更新期间容忍的故障率。
- order:更新期间的操作顺序。其中一个stop-first(旧任务在启动新任务之前停止),或者start-first(首先启动新任务,并且正在运行的任务暂时重叠)(默认stop-first)注意:仅支持v3.4及更高版本。
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
2.3 networks区域
version: "3"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
- 创建了一个名为myapp_default的网络。
- 使用web配置创建容器,在web下加入myapp_default网络。
- 使用db配置创建容器,在db下加入myapp_default网络。
version: '2' services:
app:
image: busybox
command: ifconfig
networks:
app_net:
ipv4_address: 172.16.238.10 networks:
app_net:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
gateway: 172.168.238.254
2.4 volumes区域
version: "3"
services:
db:
image: db
volumes:
- data-volume:/var/lib/db
backup:
image: backup-service
volumes:
- data-volume:/var/lib/backup/data
volumes:
data-volume:
附005.Docker Compose文件详解的更多相关文章
- 附003.Docker Compose命令详解
一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...
- Docker Compose文件详解 V2
Compose file reference 语法: web: build: ./web ports: - "5000:5000" volu ...
- Docker Compose配置文件详解(V3)
Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...
- Docker Compose 配置文件详解
先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...
- docker entrypoint入口文件详解
docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...
- Docker学习(六)——Dockerfile文件详解
Docker学习(六)--Dockerfile文件详解 一.环境介绍 1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录 ...
- k8s之yaml文件详解
k8s之yaml文件详解 目录 k8s之yaml文件详解 1. k8s支持的文件格式 2. YAML语言格式 3. 查看api资源版本标签 4. 编写nginx-test.yaml资源配置清单 4.1 ...
- web.xml文件详解
web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
随机推荐
- Java9都快发布了,Java8的十大新特性你了解多少呢?
Java 9预计将于今年9月份发布,这是否会是一次里程碑式的版本,我们拭目以待.今天,我们先来复习一下2014年发布的Java 8的十大新特性. Java 8可谓是自Java 5以来最具革命性的版本了 ...
- python - class类 (二) 静态属性/类方法/静态方法
静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...
- 2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165227 Exp4 恶意代码分析 实验步骤: 使用的设备:Win7(虚拟机).kali(虚拟机) 实验一:使用如计划任务,每隔一分钟记录自己的电脑有哪些程 ...
- 404错误处理以及以后缀为action结尾的处理
--------------第一种是胡乱敲,后缀不是以action结尾,出现404错误-----------------------------
- Django配置图片上传
本文首先实现django中上传图片的过程,然后解决富文本编辑器文件上传的问题. 一. 上传图片 1.在 settings.py 中配置MEDIA_URL 和 MEDIA_ROOT 在 D:\blog ...
- nodejs async series 小白向
async.series({ flag1:function(done){ //flag1 是一个流程标识,用户自定义 //逻辑处理 done(null,"返回结果&qu ...
- 005_关于HTTP协议中的保持连接
缘起 中午在群里讨论,用ab测试 一台只提供静态文件服务, 不与其他任何系统交互的时候,为什么也会产生大量的TIME WAIT状态的. 首先,我们可以简单的理解,在TCP连接的两端,谁主动断开连接(先 ...
- MFC CStdioFile
读Text文件 void CNWiReworkDlg::ReadHexFile() { using namespace std; CStdioFile file; file.Open(hexFileP ...
- windows下搭建eclipse关于python的开发环境及初始化参数配置
1.安装jdk 因为eclipse是java开发的,运行eclipse程序需要安装jdk 安装jdk以后需要配置java_home环境变量 2.安装python2.7(比较简单,此处略) 3.下载ec ...
- VirtualBox虚拟机安装Mac OS 10.12
注:本文作者 (QQ:85805214) 本博主只是转载发布而已. VMware 安装Mac OS 方法 由于Virtual Box拷贝文件比较麻烦,有时候经常出现拷贝失败的情况,故使用VMware ...