Docker Compose 文件讲解
Docker Compose 是什么
Docker Compose是定义和运行多容器 Docker 应用程序的工具。使用"Compose",您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置创建并启动所有服务
使用 Docker Compose
使用Compose基本上是一个三步过程:
- 使用 定义应用的环境,以便可以在任何地方重现。
Dockerfile- 定义组成应用的服务,以便它们可以在隔离的环境中一起运行。
docker-compose.yml- 运行和撰写启动并运行整个应用。
docker-compose up
官方给出了一个标准的 docker-compose.yml
version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
Docker Compose 版本支持
"Compose"的文件格式有多种版本:1、2、2.x 和 3.x,每个版本所支持的docker程序有所不同:
| Compose 文件版本 | Docker 发布版本 |
|---|---|
| 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.+ |
Compose 文件使用的关键字
build
在生成镜像时应用的配置选项。
build可以指定为包含生成上下文路径的字符串:
version: "3.7"
services:
webapp:
build: ./dir
或者,作为在上下文中指定的路径和可选的 Dockerfile以及args的对象:
英文解释:
context: 语境
Dockerfile-alternate: Dockerfile的替代(自己定义的Dockerfile)
args: [我的理解]:传入参数
version: "3.7"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
如果你想要指定其他的,Compose 可以使用这些来命名已经建立的镜像:image build webapp tag image
build: ./dir
image: webapp:tag
这导致镜像被命名和标记,该图像是从webapp tag ./dir构建的
注意:在以(版本3)Compose文件以群集模式部署堆栈时,将忽略此选项。该命令仅接受预构建的镜像。
docker stack
CONTEXT
包含Dockerfile的目录的路径,或者git存储库的URL。
当提供的值是相对路径时,它将被解释为相对于Compose文件的位置。该目录同样被发送到Docker守护程序来构建上下文。 Compose用生成的名称构建并标记它,然后使用该镜像。
build:
context: ./dir
DOCKERFILE
备用的Dockerfile
Compose使用一个备用文件进行构建。因此还必须指定一个构建路径。
build:
context: .
dockerfile: Dockerfile-alternate
ARGS
添加构建参数,这是只能在构建过程中访问的环境变量。
首先,在Dockerfile中指定参数:
ARG buildno
ARG gitcommithash
RUN echo "Build number: $buildno"
RUN echo "Based on commit: $gitcommithash"
然后再键入指定参数。您可以传递映射或列表:build
build:
context: .
args:
buildno: 1
gitcommithash: cdc3b19
build:
context: .
args:
- buildno=1
- gitcommithash=cdc3b19
注意:在Dockerfile中,如果您在指令前指定,则在下方的构建指令中不可用。如果您需要一个参数在两个地方都可用,请在说明中也指定它。有关用法的详细信息,请参阅了解ARGS和FROM之间的交互方式。
ARG FROM ARG FROM FROM
您可以在指定构建参数时忽略该值,在这种情况下,构建时的值就是运行Compose的环境中的值。
args:
- buildno
- gitcommithash
注意:YAML布尔值 (, , , , , )必须用引号引起来,以便解析器将它们解释为字符串 true false yes no on off
CACHE_FROM
引擎用于缓存解析的镜像列表。
build:
context: .
cache_from:
- alpine:latest
- corp/web_app:3.14
注意:此选项是v3.2中的新增功能
LABELS
使用Docker标签将元数据添加到生成的图像中。可以使用数组或字典。建议使用反向DNS表示法,以防止标签与其他软件使用的标签冲突。
build:
context: .
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
com.example.label-with-empty-value: ""
build:
context: .
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
- "com.example.label-with-empty-value"
注意:此选项是v3.3中的新增功能
SHM_SIZE
设置此构建容器的分区大小。指定数据为表示字节数的整数值或表示字节值的字符串
/dev/shm
build:
context: .
shm_size: '2gb'
build:
context: .
shm_size: 10000000
在3.5版文件格式添加
TARGET
建立内部定义的指定阶段
Dockerfile。有关详细信息,请参见多阶段构建文档。
build:
context: .
target: prod
在3.4版文件格式添加
其他功能用的到我再继续更新,当然想让我提前更新,可以留言(翻译真的烧脑子)
Docker Compose 文件讲解的更多相关文章
- 附005.Docker Compose文件详解
一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...
- Docker Compose文件详解 V2
Compose file reference 语法: web: build: ./web ports: - "5000:5000" volu ...
- Docker学习笔记之常用的 Docker Compose 配置项
0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...
- Docker 核心技术之Docker Compose
Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...
- Docker Compose 创建yml 简单试例
Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/c ...
- 一文掌握Docker Compose
目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...
- 19、Docker Compose
编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是docker应用场景中,编排意味着用户可以灵活地对各种容器资源实现定义和管理. 在我们部署多容器的应用时: 要从D ...
- Docker Compose搭建ELK
Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...
- 单机编排之Docker Compose
当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...
随机推荐
- mysql数据库常用命令入门
查询所有数据库 show databases; 创建数据库 create database mytest001 default character set utf8; 查看数据库的默认字符集 show ...
- spring配置ConcurrentMap实现缓存
spring本身内置了对Cache的支持,本次记录的是基于Java API的ConcurrentMap的CacheManager配置. 1.xml文件中增加命名空间 <beans xmlns=& ...
- Pandas写excel总结:写入多个sheet、1个sheet写入多行、向已有sheet追加数据
1.最简单最基础的写:1excel1sheet df.to_excel("test.xlxs") 2.在一个excel文件里面写入多个sheet writer=pd.ExcelWr ...
- HTML5图片预览 放大
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- hexo命令
2017-09-12 by chenyan 安装 npm install hexo -g #安装npm update hexo -g #升级hexo init #初始化 简写 hexo n " ...
- for循环的应用
for循环的应用:迭代法,穷举法. 一.迭代法:(有一定规律) 每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备. 例:1.100以内所有数的和. int sum = 0;f ...
- this.props
React中的每一个组件,都包含有一个属性(props),属性主要是从父组件传递给子组件的,在组件内部,我们可以通过this.props获取属性对象
- App自动化测试方案
App自动化测试方案 1.1 概述 什么是App自动化?为什么要做App自动化? App自动化是指给 Android或iOS上的软件应用程序做的自动化测试. 手工测试和自动化测试的对比如下: 手工测 ...
- Rong's Portfolio
車架貼標設計 Velocite SYN frame decals 以簡潔設計的原則,分別依公路車.登山車.電動車的屬性設計表面塗裝曲線,針對車架特殊造型設計貼標突顯其功能,並搭配品牌基本色與市場偏好色 ...
- python爬虫-纠正MD5错误认知
m = md5(".encode()) print(m.hexdigest()) # 25d55ad283aa400af464c76d713c07ad m = md5(".enco ...