【问题标题】:What are the benefits of provisioning a Docker container with Ansible instead of a Dockerfile?使用 Ansible 而不是 Dockerfile 配置 Docker 容器有什么好处?
【发布时间】:2016-05-05 14:45:02
【问题描述】:

我目前正在研究配置 Docker 容器的两种替代方法。容器当前为managed with Ansible

方法一:写一个Dockerfile

通常我会根据自己的需要写一个Dockerfile,构建一个映像,然后使用该映像来启动一个容器。

方法二:使用 Ansible

  1. 写一个最小的Dockerfile 来设置SSH 访问
  2. 从控制机器为容器提供 Ansible,应用相关角色
  3. 构建 Docker 镜像

快速比较

使用第二种方法,我可以在其他上下文中重用角色,而不管 Docker。例如,我可以将它们应用于 EC2 实例或内部托管的裸机服务器。

一大损失似乎是 Docker “分层”,有利于(可以说)更强大(Ansible 模块、幂等性,通常没有 bash 脚本)的配置体验。

我相信还有更多我没有考虑过。

对于方法 2,我从(更传统的)方法 1 中遗漏了什么?有没有其他更好的方法来解决这个涉及 Ansible 和 Docker 的问题?

PS:与问题不严格相关,但也许值得一提:我想使用 Vagrant 管理涉及这些 Docker 容器的开发环境。


更新 #1

方法 3:Packer + Ansible

将 Packer 与 Docker 构建器和 Ansible 供应器一起使用(请参阅@polarisuser 答案)

在我看来,这可以看作是方法 2 的改进。

【问题讨论】:

    标签: docker ansible provisioning


    【解决方案1】:

    您可能想要查看的第三个选项是使用 Packer 来创建您的图像。我目前正在使用 Packer,我真的很喜欢它。

    我所做的是使用 Packer 提取我想要的 docker 映像,然后在配置步骤中,我使用 Chef 使我的映像处于所需状态。你可以用 Ansible 做同样的事情。

    【讨论】:

    • 这也是一个有趣的选择。我已经使用了 Packer,但没有使用 Docker builder。
    猜你喜欢
    • 2010-09-14
    • 2022-08-03
    • 1970-01-01
    • 2017-11-10
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多