使用Vagrant时访问Docker功能

时间:2014-05-16 06:38:04

标签: vagrant docker

我已经使用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脚本来启动容器。

2 个答案:

答案 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