【发布时间】:2016-05-05 14:45:02
【问题描述】:
我目前正在研究配置 Docker 容器的两种替代方法。容器当前为managed with Ansible。
方法一:写一个Dockerfile
通常我会根据自己的需要写一个Dockerfile,构建一个映像,然后使用该映像来启动一个容器。
方法二:使用 Ansible
- 写一个最小的
Dockerfile来设置SSH 访问 - 从控制机器为容器提供 Ansible,应用相关角色
- 构建 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