Docker Compose 是什么

官方文档:

Docker Compose是定义和运行多容器 Docker 应用程序的工具。使用"Compose",您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置创建并启动所有服务

使用 Docker Compose

使用Compose基本上是一个三步过程:

  1. 使用 定义应用的环境,以便可以在任何地方重现。Dockerfile
  2. 定义组成应用的服务,以便它们可以在隔离的环境中一起运行。docker-compose.yml
  3. 运行和撰写启动并运行整个应用。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 文件讲解的更多相关文章

  1. 附005.Docker Compose文件详解

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

  2. Docker Compose文件详解 V2

    Compose file reference 语法: web:      build: ./web      ports:      - "5000:5000"      volu ...

  3. Docker学习笔记之常用的 Docker Compose 配置项

    0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...

  4. Docker 核心技术之Docker Compose

    Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一 ...

  5. Docker Compose 创建yml 简单试例

    Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/c ...

  6. 一文掌握Docker Compose

    目录 Docker Compose介绍 Docker Compose安装 Docker Compose基本示例 1.基本文件及目录设置 2.创建一个Dockerfile 3.通过docker-comp ...

  7. 19、Docker Compose

      编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是docker应用场景中,编排意味着用户可以灵活地对各种容器资源实现定义和管理.   在我们部署多容器的应用时: 要从D ...

  8. Docker Compose搭建ELK

    Elasticsearch默认使用mmapfs目录来存储索引.操作系统默认的mmap计数太低可能导致内存不足,我们可以使用下面这条命令来增加内存: sysctl -w vm.max_map_count ...

  9. 单机编排之Docker Compose

    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...

随机推荐

  1. Derby数据库的使用

    一. Derby数据库平台的搭建 ●  JDK 1.6版本及之后的版本为Java平台提供了一个数据库管理系统,简称Derby数据库.   ●  连接Derby数据库需要有关的类,这些类以jar文件的形 ...

  2. python 3新式类的多继承

    因为我用的是python3,所以所用到的类都是新式类,这里我说的都是新式类,python2类的继承复杂一些,主要有新式类和老式类.python3类(新式类)的继承是是广度优先(BFS),实例如下: c ...

  3. 吴裕雄--天生自然 R语言开发学习:功效分析

    #----------------------------------------# # R in Action (2nd ed): Chapter 10 # # Power analysis # # ...

  4. POJ 2728 二分+最小生成树

    题意:给n个点,可以将每个点的x,y的欧几里得距离(就是坐标系里两点距离公式)看作距离,z的差值即为费用差,求的是所有最小生成树中的min(边费用和/边距离和). 思路:其实挑战P143有类似的列题, ...

  5. python pip配置以及安装工具包的一些方法

    pip是python的一个工具包管理工具,可以下载安装需要的工具包,想要使用它来管理工具包首先要安装pip,安装方法可以参照下面这个网址来进行: https://www.cnblogs.com/Nan ...

  6. Android 一个3D相册源码

    我们专业课有Android的学习,最后老师让做一个简单的Android应用程序.我在网上找些资料,加上自己改造一下做了一个3D相册. 程序仿照Android的相册功能,调用Gallery类对相片进行浏 ...

  7. 通过IE私有滤镜让IE6 7 8支持背景透明,内容不透明效果。

    CSS3已经支持背景rgba的rgba透明度,这一方法可以避免元素内容也随背景一起变透明(详情请阅http://www.cssha.com/css3-new-knowledge-student).但是 ...

  8. 在博客中显示图片_Mac版

    主要是防止自己忘掉 为了解决一开始自己想在写入的博客中添加本地图片,直接链接的话在自己的电脑倒是可以显示图片,但是在别人的电脑上就没办法加载图片了,问各路大神也没人愿意解答,百度也没有想要的答案,只好 ...

  9. Leetcode 24题 两两交换链表中的节点(Swap Nodes in Pairs))Java语言求解

    题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4,你应该返回 ...

  10. 在命令行中使用pushd和popd进行快速切换目录

    当频繁的切换三个或三个以上的目录的时候,可以使用pushd命令.每次使用目录路径被存储在栈中,然后用pushd和popd操作在目录之间切换. 例如: [root@gameserver1 ~]# pus ...