介绍

Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

官网:Overview of Docker Compose | Docker Documentation

例如:要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

通过 Compose,可以使用 docker-compose.yml 文件来定义一组相关联的应用容器为一个项目(project)。然后,使用一个命令,就可以创建并启动所有服务。

Compose 中两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行生命周期管理。

Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

安装

Install Docker Compose | Docker Documentationdocs.docker.com/compose/cli-command/#install-on-linux)

注:Compose 区分 Version 1 和 Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2 支持更多的指令。Version 1 将来会被弃用。

Version 1

Linux:

# 下载二进制文件
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 授予可执行权限
$ sudo chmod +x /usr/local/bin/docker-compose# 测试
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

要安装其他版本的 Compose,请替换 1.29.2

Version 2

Linux:

# 下载二进制文件
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose# 授予可执行权限
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose# 测试
$ docker compose version
Docker Compose version v2.2.3

要安装其他版本的 Compose,请替换 2.2.3

注: x86_64 架构的 Linux 建议按照上边的方法下载二进制包进行安装,如果计算机的架构是 ARM (例如,树莓派),使用 pip 安装。

使用

注意:version1 和 version2 的命令不同,以下例子使用 version1 版本。

命令

用法:
docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]

  • -f, --file FILE:指定 compose file(默认为 docker-compose.yml);
  • -p, --project-name NAME:指定 project name (默认为当前目录名)。

验证并查看 Compose 文件:

$ docker-compose config

构建、(重新)创建、启动和连接作为服务的容器:

$ docker-compose up
  • -d, --detach:后台运行容器;
  • --no-build:不执行 build;
  • build:启动容器前先 build images;

停止 up 命令创建的对象并移除:

$ docker-compose down

模版文件

默认的模板文件名称为 docker-compose.yml,格式为 YAML:

version: "3"services:web:build: .ports:- "5000:5000"volumes:- .:/coderedis:image: redis

注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。

如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。

Compose file 格式

当前有三种版本的 Compose file 格式:

  • Version 1:

    • 未声明 version 字段的配置文件都被视为 V1 版,所有的服务都作为根选项在配置文件中声明。
    • 支持 V1 的 Compose 程序版本最高到 1.6.x,再高版本的 Compose 不推荐使用 V1。
    • 不支持数据卷、网络和构建参数配置。
    • V1 的 Compose 不会利用网络优势,每个容器都位于默认的 bridge 网络上,并且可以从其他容器的 IP 地址访问,需要使用 links 来启用容器之间的发现。
  • Version 2.x:

    • 具体配置如 version: '2'version: '2.1' 等。
    • 必须在配置文件根选项指定版本号,并且主版本数字为 2,且所有服务必须在 services 配置项下声明。
    • 1.6.0+ 版本的 Compose 都支持 V2,Docker Engine 的版本需要 1.10.0+ 版本。
    • 支持数据卷和网络的配置。
    • 默认情况下,每个容器都加入了应用范围的默认网络,并且可以在与服务名称相同的主机名下发现。很大程度上 links 不是必要的。
    • V2 中加入了环境变量替换。
  • Version 3.x:

    • 目前最新版本,推荐使用。推出该版的目的是为了在 Compose 和 Docker Engine 的 swarm 模式之间形成交叉兼容。
    • 通过 YAML 的根配置项 version 来指定,具体配置如 version: '3'version: '3.1' 等。
    • V3 删除了多个配置项,但也新增了更多配置项。

compose file 格式 和 docker 版本的兼容关系参考:Compose file | Docker Documentation

– End –

容器编排-Docker Compose相关推荐

  1. Docker进阶(3)docker容器编排-docker compose、swarm、service

    Docker进阶(3)docker容器编排 Docker进阶(3)docker容器编排 1. 容器编排 2. docker compose 2.1 安装 2.2 官方文档创建一个简单的web应用 2. ...

  2. Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes

    19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...

  3. Docker - 容器编排工具 compose 之安装

    准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 ...

  4. 1.07 容器编排docker Swarm

    1.编排swarm简介 学习怎么将docker用于生产环境,前面学的是用于本地测试环境 之前学的是通过docker客户端连接安装好docker的linux机器,如下图 生产环境下机器和容器都非常多,怎 ...

  5. Docker容器编排利器Compose 安装与简单Demo

    1.参考链接:(1)https://lw900925.github.io/docker/docker-compose-getting-started.html      (2)http://www.i ...

  6. Docker知识五:服务编排(Docker Compose概念)

  7. Docker学习(六):docker compose容器编排

    Docker-compose 实现对容器集群的快速编排 多服务部署的管理工具 定义docker-compose.yml文件,写好容器之间的调用关系,通过命令完成多个容器的同时启动关闭 解决了容器与容器 ...

  8. 设置docker开机自启动 docker compose设置容器自启动

    Docker启动命令 systemctl start docker Docker开机自启动 systemctl enable docker Docker设置容器为自启动 --restart=alway ...

  9. Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)

    文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...

最新文章

  1. Verilog中关于case语句的优先级
  2. nginx自定义http头
  3. pycharm 自动生成文件注释和函数注释
  4. [numpy]random.choice()随机选取内容
  5. 查询缓存---Mybatis学习笔记(十)
  6. 语言课设医院诊疗系统_江苏孤独症孩子有哪些典型特征?上海六一儿童医院
  7. yolov5安装pip install requirements.txt,pycocotools安装报错
  8. DNS 正向查找与反向查找
  9. java自动封箱_java自动封箱是什么意思
  10. 目标检测(二十二)--R-FCN
  11. bzoj3207花神的嘲讽计划Ⅰ
  12. vue3中获取dom元素和操作
  13. 如何获取股票数据接口?
  14. php英文商城,童装英文外贸网站系统
  15. 2020 ECCV 所有论文及补充材料链接(一)
  16. 多分类任务中每个类Acc、Specificity、Sensitivity、Precision的计算
  17. 模型剪枝学习笔记 --- EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning
  18. 通过you-get在哔哩哔哩下载视频报错处理
  19. 使用Floyd-Warshall算法求出两点之间的最短路径
  20. python怎么读数据_Python如何读取数据

热门文章

  1. 【操作系统】“哲学家进餐”问题
  2. c++ bitset 基本用法
  3. QTreeWidgetItem设置复选框的禁用状态
  4. mongoose的删除和修改
  5. python项目中的self到底是什么?
  6. 视频理解论文实验笔记2014-2022
  7. 铁姆肯公司收购Aurora轴承公司
  8. MHA与PXC的区别
  9. SLAM--Geometric jacobian of UR series.
  10. 手机版linux软件下载,手机助手linux版下载