我已经使用Vagrant一段时间了,现在正在探索Docker。我一直都很喜欢Vagrant的简洁。现在,我试图在Vagrant中使用Docker提供程序。我使用以下Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d|
d.image = "fgrehm/vagrant-ubuntu:precise"
end
end
我的理解是我可以运行vagrant up
。然后我可以使用vagrant docker-run -- <command>
运行Docker容器。
到目前为止一切顺利。让Docker如此出色的原因是你可以乱搞并提交变更。我不明白在使用Docker提供程序进行Vagrant时如何将其合并到我的工作流程中。例如。如何运行docker commit
来提交容器的状态?我期待某种vagrant docker-commit
,但这不存在?
编辑:事后看来,我认为这不是你应该使用Vagrant / Docker的方式。虽然它是claimed that both tools complement each other,但我的观点是他们(还)还没有很好地一起玩。现在,我们正在使用Dockerfiles来构建我们的图像。另外,我们制作了一组bash脚本来启动容器。
答案 0 :(得分:1)
尝试指定&#34; has_ssh&#34;为true,并要求Vagrant使用端口22而不是2222:
ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker"
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d, o|
d.image = "fgrehm/vagrant-ubuntu:precise"
d.has_ssh = true
o.ssh.port = 22
end
end
然后使用vagrant up; vagrant ssh
访问它。
答案 1 :(得分:0)
如果您在主机 - 主机上拥有相同客户端版本的docker,则另一个选项是docker服务器在boot2docker VM内启动。在这种情况下,您可以设置
export DOCKER_HOST=tcp://:4243 (or 2375 depending on docker version)
然后访问运行本地客户端的所有docker功能:
docker ps -a