使用Ansible而不是Dockerfile配置Docker容器有什么好处?

时间:2016-05-05 14:45:03

标签: docker ansible provisioning

我目前正在研究提供Docker容器的两种替代方法。容器目前是managed with Ansible

方法1:写一个Dockerfile

通常情况下,我会根据自己的需要编写Dockerfile,构建图像,然后使用该图像旋转容器。

方法2:使用Ansible

  1. 编写一个设置SSH访问权限的最小Dockerfile
  2. 使用Ansible从控制计算机配置容器,应用相关角色
  3. 构建Docker镜像
  4. 快速比较

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

    一个重要的损失似乎是Docker"分层",支持(可以说)更强大(Ansible模块,幂等,通常没有bash脚本)配置体验。

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

    在方法2的情况下,我(一个更传统的)方法1缺少什么?有没有其他更好的方法解决这个问题涉及Ansible和Docker?

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

    更新#1

    方法3:Packer + Ansible

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

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

1 个答案:

答案 0 :(得分:2)

您可能希望查看的第三个选项是使用Packer创建图像。我目前正在使用Packer,我非常喜欢它。

我的工作是使用Packer来提取我想要的泊坞窗图像,然后在配置步骤中,我使用Chef将图像置于所需状态。你可以用Ansible做同样的事情。