我目前正在研究两种配置Docker容器的替代方法.容器当前为managed with Ansible.
方法1:编写一个Dockerfile
通常,我会根据自己的需要编写一个Dockerfile,构建一个映像,然后使用该映像启动一个容器.
方法2:使用Ansible
>编写一个最小的Dockerfile来设置SSH访问
>运用相关角色从控制机器为容器提供Ansible
>构建Docker映像
快速比较
使用第二种方法,无论Docker如何,我都可以在其他上下文中重用角色.例如,我可以将它们应用于EC2实例或内部托管的裸机服务器.
一个巨大的损失似乎是Docker的“分层”,而倾向于(可以说)更强大的(Ansible模块,幂等,通常没有bash脚本编写)供应经验.
我相信还有更多我没有考虑的东西.
在方法2的情况下,(更传统的)方法1我缺少什么?还有其他更好的方法可以解决涉及Ansible和Docker的问题吗?
PS:与这个问题并不严格相关,但也许值得一提:我想使用Vagrant管理涉及这些Docker容器的开发环境.
更新#1
方法3:Packer Ansible
将Packer与Docker Builder和Ansible Provisioner结合使用(请参阅@polarisuser答案)
我认为这可以视为方法2的改进.
最佳答案
您可能要查看的第三个选项是使用Packer创建图像.我目前正在使用Packer,我非常喜欢它.
我要做的是使用Packer拉出所需的docker映像,然后在配置步骤中,使用Chef将我的映像置于所需的状态.您可以使用Ansible做同样的事情.