容器编排-Docker Compose
介绍
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相关推荐
- Docker进阶(3)docker容器编排-docker compose、swarm、service
Docker进阶(3)docker容器编排 Docker进阶(3)docker容器编排 1. 容器编排 2. docker compose 2.1 安装 2.2 官方文档创建一个简单的web应用 2. ...
- Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes
19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...
- Docker - 容器编排工具 compose 之安装
准备 首先,在使用和安装 docker compose之前,我们应该确保我们已经安装了 docker engine. 安装 官网上面有好多种安装方式,由于我们现在是在使用Docker, 个人感觉应该以 ...
- 1.07 容器编排docker Swarm
1.编排swarm简介 学习怎么将docker用于生产环境,前面学的是用于本地测试环境 之前学的是通过docker客户端连接安装好docker的linux机器,如下图 生产环境下机器和容器都非常多,怎 ...
- Docker容器编排利器Compose 安装与简单Demo
1.参考链接:(1)https://lw900925.github.io/docker/docker-compose-getting-started.html (2)http://www.i ...
- Docker知识五:服务编排(Docker Compose概念)
- Docker学习(六):docker compose容器编排
Docker-compose 实现对容器集群的快速编排 多服务部署的管理工具 定义docker-compose.yml文件,写好容器之间的调用关系,通过命令完成多个容器的同时启动关闭 解决了容器与容器 ...
- 设置docker开机自启动 docker compose设置容器自启动
Docker启动命令 systemctl start docker Docker开机自启动 systemctl enable docker Docker设置容器为自启动 --restart=alway ...
- Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)
文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...
最新文章
- Verilog中关于case语句的优先级
- nginx自定义http头
- pycharm 自动生成文件注释和函数注释
- [numpy]random.choice()随机选取内容
- 查询缓存---Mybatis学习笔记(十)
- 语言课设医院诊疗系统_江苏孤独症孩子有哪些典型特征?上海六一儿童医院
- yolov5安装pip install requirements.txt,pycocotools安装报错
- DNS 正向查找与反向查找
- java自动封箱_java自动封箱是什么意思
- 目标检测(二十二)--R-FCN
- bzoj3207花神的嘲讽计划Ⅰ
- vue3中获取dom元素和操作
- 如何获取股票数据接口?
- php英文商城,童装英文外贸网站系统
- 2020 ECCV 所有论文及补充材料链接(一)
- 多分类任务中每个类Acc、Specificity、Sensitivity、Precision的计算
- 模型剪枝学习笔记 --- EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning
- 通过you-get在哔哩哔哩下载视频报错处理
- 使用Floyd-Warshall算法求出两点之间的最短路径
- python怎么读数据_Python如何读取数据