docker - Docker Compose YAML版本1和版本2有什么区别?

我是第一次使用YAML文件编写docker-compose.yaml。在这里,我知道YAML文件有两种Compose文件格式版本。编写docker-compose.yaml时需要使用哪一个?为什么?确切的区别是什么?

最佳答案

事情很混乱。一方面,存在YAML规范版本(以及其他版本):

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

  • 因此,没有YAML版本2(但是有一个YAML 1.0)

    另一方面,docker-compose文件中有版本,如果未指定,则默认为字符串 1。自docker-compose 1.6版以来,它还支持2版本(也是字符串)docker组成文件。主要区别在于,在版本2中,您可以在特定的services键下获得所有服务。当然,在扩展原始版本1 toplevel-key-is-service规范方面,它要灵活得多。

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

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

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

    https://stackoverflow.com/questions/36422778/

    相关文章:

    docker - 将其他Docker节点添加到Shipyard

    hadoop - WSO2外部Hadoop

    apache - 如何在docker中以标准方式停止solr

    plugins - PyCharm Docker部署 “[Errno 2] No such file

    docker - Ansible Docker 连接错误

    docker - 将 git 命令的结果存储在 ENV 中

    docker - 如何在没有docker客户端的情况下将通过save命令创建的docker镜像推送到

    azure - 通过远程 api 设置 Docker Volume Driver 选择

    docker - 主机上的一个Java安装可以管理部署在docker容器中的多个应用程序吗

    docker - Godep无法在Docker容器中工作