使用Vagrant时访问Docker功能

使用Vagrant时访问Docker功能,vagrant,docker,Vagrant,Docker,我已经使用流浪者一段时间了,现在正在探索Docker。我一直喜欢《流浪汉》,因为它很简单。现在,我正在尝试使用Vagrant中的Docker提供程序。我正在使用以下文件: Vagrant.configure("2") do |config| config.vm.provider "docker" do |d| d.image = "fgrehm/vagrant-ubuntu:precise" end end 我的理解是,我可以运行vagrant up。然后,我可以使用vagra

我已经使用流浪者一段时间了,现在正在探索Docker。我一直喜欢《流浪汉》,因为它很简单。现在,我正在尝试使用Vagrant中的Docker提供程序。我正在使用以下文件:

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.image = "fgrehm/vagrant-ubuntu:precise"
  end
end
我的理解是,我可以运行
vagrant up
。然后,我可以使用
vagrant Docker run--
运行Docker容器

到目前为止还不错。Docker之所以如此出色,是因为您可以随意处理并提交更改。我不明白在使用Docker provider for Vagrant时,如何将其纳入我的工作流程。例如,如何运行
docker commit
来提交容器的状态?我希望有某种
流浪码头工人提交
,但这不存在吗


编辑:事后看来,我认为这不是你应该使用Vagrant/Docker的方式。尽管如此,我的看法是他们(还)在一起打得不太好。现在,我们正在使用DockerFile来构建我们的图像。此外,我们制作了一组bash脚本来启动容器。

尝试将“has_ssh”指定为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
访问它。

如果主机上的docker客户端版本与boot2docker VM中启动的docker服务器版本相同,则另一个选项。那样的话,你可以设置

export DOCKER_HOST=tcp://:4243 (or 2375 depending on docker version)
然后访问运行本地客户端的所有docker功能:

docker ps -a

问题是您需要一个正在运行的SSH服务。除非您的容器只是一个SSH服务,否则这将打破“一个容器中一个进程”的准则。此外,您还需要一名主管来运行SSHD+之类的东西。换句话说:最有可能的情况是,您正在为一个应用程序构建类似于迷你VM的东西,而不是Docker容器,这是最初的意图。另一方面,在历史上,技术的使用方式往往与最初的意图不同。