YAML版本1和YAML版本2之间的确切区别是什么?

时间:2016-04-05 09:47:26

标签: docker containers yaml docker-compose

我第一次使用YAML文件来编写docker-compose.yaml。在这里,我发现YAML文件有两个版本。在编写docker-compose.yaml时我需要使用哪一个?为什么?有什么确切的区别?

1 个答案:

答案 0 :(得分:0)

事情令人困惑。一方面有YAML规范版本(以及其他):

  • 2005年发布的YAML 1.1版
  • 2009年发布的YAML 1.2版

所以没有YAML版本2(但是有一个YAML 1.0)

另一方面,docker-compose文件中有版本,如果未指定,则默认为字符串 1。从版本1.6 docker-compose开始,它还支持版本2(也是一个字符串)docker撰写文件。主要区别在于,在版本2中,您拥有特定services密钥下的所有服务。当然,在扩展原始版本1 toplevel-key-is-service规范时,这当然要灵活得多。

然而,版本1和版本2组合文件都使用旧的YAML 1.1标准,这使得您必须引用端口映射,因为在YAML 1.1下,这些可以被解释(取决于端口值)为sexagesimals。 YAML 1.2没有这个问题,但是docker-compose依赖于PyYAML并且在2009年之后没有更新以支持YAML 1.2

有关您在the section on how to upgrade中从撰写版本1到撰写版本2的IMO的实际差异的最佳信息

我制作了小包装脚本dcw,它将版本2的docker-compose文件预处理为YAML 1.2(所以你不必担心YAML 1.1。特性),它还允许你设置环境变量来自docker-compose.yml文件。