docker-compose日常使用问题汇总(基础)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本文主要参考官方文档对目前最新的V3版docker-compose配置文件进行一个总结。都是一些概念性的内容,不涉及具体操作。
这里主要对docker-compose配置文件的版本的相关要点进行一个简单的总结。至于每个版本具体的变化和升级信息可以参考官方的docker-compose配置文件版本与升级指南。
1.docker-compose配置文件格式的版本概述
当前有三种版本的docker-compose配置文件格式:
Version 1:
旧版格式,通过省略YAML的根配置项version来指定。
未声明版本的docker-compose配置文件都被视为V1版,所有的服务都作为根选项在docker-compose配置文件中声明。
支持V1的Compose最高到1.6.x,再高版本的docker-compose不推荐使用V1版docker-compose配置文件。
不支持数据卷、网络和构建参数配置。
V1的docker-compose不会利用网络优势,每个容器都位于默认的bridge网络上,并且可以从其他容器的IP地址访问,需要使用links来启用容器之间的发现。
Version 2.x:
通过YAML的根配置项version来指定,具体配置如version: '2'或version: '2.1'等。
必须在docker-compose配置文件根选项指定版本号,并且主版本数字为2,且所有服务必须在services配置项下声明。
1.6.0+版本的docker-compose都支持V2,Docker Engine的版本需要1.10.0+版本。
支持数据卷和网络的配置。
默认情况下,每个容器都加入了应用范围的默认网络,并且可以在与服务名称相同的主机名下发现。很大程度上links不是必要的。
V2中加入了环境变量替换。
Version 3.x:
最新版本,也是推荐使用版本,推出该版的目的是为了在docker-compose和Docker Engine的swarm模式之间形成交叉兼容。
通过YAML的根配置项version来指定,具体配置如version: '3'或version: '3.1'等。
V3删除了多个配置项,但也新增了更多配置项。
关于docker-compose配置文件版本的常见注意事项:
在声明V2和V3版本时需注意:
在指定docker-compose配置文件要使用的版本时,需同时指定主版本数字和次版本数字。如果未给定次版本数字,则默认使用0而不是最新版本,因此将不支持再更高版本中才加入的新功能。比如version: '3',使用的是3.0版本而不是目前最新的3.9版本。
在使用多docker-compose配置文件时需注意:
使用多个docker-compose配置文件扩展服务时,每个文件必须为相同的版本。
2. docker-compose配置文件格式版本与Docker的兼容性关系
docker-compose配置文件格式具有多种版本。其中docker-compose配置文件格式版本与Docker的兼容性关系如下表所示:
docker-compose配置文件格式版本 Docker Engine版本
Compose配置文件格式版本 | Docker Engine版本 |
3.8 | 19.03.0+ |
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 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2 | 1.10.0+ |
1 | 1.9.1.+ |
如果使用的较旧版本的Docker,可以参考官方的Compose版本发布列表。其中的每组发行说明都详细说明了支持的Docker Engine版本和兼容的Compose配置文件格式版本。
3.兼容模式
在1.20.0版本,docker-compose在docker-compose命令中引入了一个新的选项--compatibility,目的在于帮助开发人员更轻松地过渡到V3版。启用该选项后,docker-compose命令会读取每个服务定义的deploy部分,并尝试将其转换为等效的V2配置项。目前,以下deploy下的配置项已被转换:
resources下的limits和reservations下的memory
replicas
restart_policy下的 condition 和max_attempts
所有的其他配置项都将被忽略,如果这些被忽略的配置项存在则会发出一个警告。可以使用带--compatibility的Config命令查看将用于deploy的配置。
注意请勿在生成环境使用兼容模式!
建议不要在生产环境中使用--compatibility选项。由于使用非Swarm模式属性生成的配置仅是近似值,因此可能会产生意外的结果。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |