用Ansible而不是DockerfileconfigurationDocker容器有什么好处?
我目前正在研究提供Docker容器的两种备选方法。 容器目前由Ansiblepipe理 。
方法1:写一个Dockerfile
通常我会为我的需要编写一个Dockerfile
,构build一个图像,然后使用该图像旋转一个容器。
方法2:使用Ansible
- 编写一个设置SSH访问的最小的
Dockerfile
- 从控制机器提供Ansible的容器,应用相关angular色
- 构buildDocker镜像
快速比较
采用第二种方法,无论Docker如何,我都可以在其他上下文中重用angular色。 例如,我可以将它们应用于EC2实例或内部托pipe的裸机服务器。
一个巨大的损失似乎是Docker“层次化”,有利于(可以说是)更强大的(Ansible模块,幂等性,通常不bash脚本)configuration经验。
我相信还有更多的我没有考虑。
在方法2的情况下,我从(更传统的)方法1中错过了什么? 有没有其他更好的方法来解决涉及Ansible和Docker的问题?
PS:与问题不严格相关,但也许值得一提:我想用Vagrant来pipe理涉及这些Docker容器的开发环境。
更新#1
方法3:Packer + Ansible
使用Packer与Docker构build器和Ansible provisioner(请参阅@polarisuser答案)
在我看来,这可以被看作是对方法2的一种改进。
您可能想要查看的第三个选项是使用Packer来创build图像。 我目前使用的是Packer,我非常喜欢它。
我所做的是使用Packer来拉取我想要的docker图像,然后在configuration步骤中,我使用Chef将图像置于所需的状态。 你可以用Ansible做同样的事情。