关于版本和升级 | About versions and upgrading (Compose)
撰写文件版本并升级
Compose文件是一个定义Docker应用程序的服务,网络和卷的YAML文件。
现在在这些参考文献中描述了撰写文件格式,这些文件格式针对每个版本。
参考文件 | 在这个版本中改变了什么 |
---|---|
版本3(最新,推荐) | 版本3更新 |
版本2 | 版本2更新 |
版本1 | 版本1更新 |
下面的主题解释了版本之间的差异,Docker Engine兼容性以及如何升级。
兼容性矩阵
有几种版本的Compose文件格式 - 1,2,2.x和3.x
此表显示哪些Compose文件版本支持特定的Docker版本。
Compose file format | Docker Engine release |
---|---|
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.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文件格式版本外,Compose本身的发布时间表也如发布版本中所示,但文件格式版本并不一定随每个发行版而增加。例如,Compose文件格式3.0首先在Compose版本1.10.0中引入,并在随后的版本中逐步版本化。
在Docker和Compose兼容性上寻找更多细节?我们建议尽可能保持最新的版本。但是,如果您使用的是较旧版本的Docker,并且想要确定哪个Compose版本兼容,请参阅撰写发行说明。每套发行说明都详细介绍了哪些版本的Docker Engine受支持,以及兼容的Compose文件格式版本。(另见#3404号讨论。)
有关版本和如何升级的详细信息,请参阅版本控制和升级。
版本
目前有三种版本的Compose文件格式:
- 版本1,传统格式。这是通过省略
version
YAML根部的一个键来指定的。
兼容性矩阵显示映射到Docker Engine发行版的Compose文件版本。
要将项目移到更高版本,请参阅升级部分。
注意
:如果您使用多个Compose文件或扩展服务,则每个文件的版本必须相同 - 例如,不能在单个项目中混合使用版本1和版本2。
根据您使用的版本,有几件事情会有所不同:
- 结构和允许的配置键
下面将解释这些差异。
版本1
撰写不声明版本的文件被认为是“版本1”。在这些文件中,所有服务都是在文档的根部声明的。
版本1是支持撰写高达1.6.x版
。它将在未来的Compose版本中被弃用。
版本1文件不能声明命名卷,网络或构建参数。
使用版本1时,Compose不利用网络:每个容器都放置在默认bridge
网络上,并且可以通过其IP地址上的每个其他容器进行访问。您将需要使用链接来启用容器之间的发现。
例:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
redis:
image: redis
版本2
使用版本2语法撰写文件必须在文档的根目录中指明版本号。所有服务必须在services
密钥下声明。
版本2文件由Compose 1.6.0+
支持,并且需要版本为1.10.0+
的Docker引擎。
命名卷可以在volumes
密钥下声明,网络可以在networks
密钥下声明。
默认情况下,每个容器都加入一个应用程序范围的默认网络,并且可以在与服务名称相同的主机名上发现。这意味着链接很不必要。有关更多详细信息,请参阅撰写中的联网。
简单的例子:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: redis
一个更广泛的例子,定义卷和网络:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
networks:
- front-tier
- back-tier
redis:
image: redis
volumes:
- redis-data:/var/lib/redis
networks:
- back-tier
volumes:
redis-data:
driver: local
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
添加了其他几个选项来支持联网,例如:
aliases
版本2中也添加了变量替换。
版本2.1
引入仅在Docker引擎版本1.12.0以上
提供的新参数的版本2的升级。Compose 1.9.0+
支持版本2.1文件。
引入以下附加参数:
link_local_ips
版本2.2
2.1版本的升级引入了仅在Docker Engine版本1.13.0+中
可用的新参数。Compose 1.13.0+
支持版本2.2文件。该版本还允许您指定服务配置中的默认缩放编号。
引入以下附加参数:
init
版本2.3
2.2版的升级引入了仅在Docker Engine版本17.06.0以上
版本中提供的新参数。Compose 1.16.0+
支持版本2.3文件。
引入以下附加参数:
target
用于构建配置
版本3
为了在Compose和Docker Engine的swarm模式之间交叉兼容,版本3删除了几个选项并添加了更多选项。
- 删除:
volume_driver
,volumes_from
,cpu_shares
,cpu_quota
,cpuset
,mem_limit
,memswap_limit
,extends
,group_add
。请参阅升级指南以了解如何迁移这些指南。(有关更多信息extends
,请参阅扩展服务。)
版本3.3
引入仅适用于Docker Engine 17.06.0
及更高版本的新参数的版本3的升级。
引入以下附加参数:
- 建立
labels
升级
版本2.x到3.x
在版本2.x和3.x之间,撰写文件的结构是相同的,但是几个选项已被删除:
volume_driver
:不是在服务上设置卷驱动,而是使用顶层volumes
选项定义卷并在那里指定驱动。版本:“3”服务:db:image:postgres卷: - data:/ var / lib / postgresql / data卷:data:驱动程序:mydriver
版本1到2.x
在大多数情况下,从版本1移动到2是一个非常简单的过程:
- 将整个文件缩进一层,并
services:
在顶部放置一个键。
如果您使用特定的配置功能,则会更加复杂:
dockerfile
:现在生活在build
关键之下:build
:context:。dockerfile
:Dockerfile-alternate
撰写文件格式参考
- 撰写文件版本3