如何从VagrantconfigurationDockerfile

我如何通过外部的Dockerfile启动Docker的configuration? 我的stream浪文件目前看起来像这样

Vagrant.configure("2") do |config| config.vm.box = "precise64" config.vm.define :server_infrastructure do |t| end config.vm.provision "docker" do |d| d.pull_images "ubuntu" #how does the below work? #d.build "new-container-name" "local-docker-file-name" end end 

非常感谢您的帮助

在v1.6.0中添加了Dockerconfiguration程序构build映像的选项 。 从Vagrant网站下载最新版本。

一旦你完成了,把一个Dockerfile放在你的Vagrantfile旁边。 将此添加到您的Vagrant文​​件中:

 config.vm.provision "docker" do |d| d.build_image "/vagrant", args: "-t my-name/my-new-image" d.run "my-name/my-new-image" end 

现在你的Docker映像将会被build立起来,并且随着vagrant up而运行。

一种解决方法是通过shellconfiguration:

 config.vm.provision "shell", inline: "docker build -t username/image /vagrant; docker run -d username/image" 

为了使docker从docker文件build立图像,必须在客机中提供有问题的docker文件,并确保这是使用stream浪汉的共享文件夹function。

默认情况下,vagrant将您的项目根文件夹挂载到名称为/ vagrant下的新vm。 但在你的情况下,我build议你分享一个不同的文件夹,把你的dockerfiles在那里。 同样,通过共享不同的文件夹,您可以确保您的dockerfiles被来宾机看作是只读的。

现在假设你在项目根目录中创build了一个名为“docker”的新文件夹,并将dockerfiles放入其中。 现在,如果你将这个文件夹挂载到你的客机上,并指向docker来使用这个文件,你就全都设置好了。 如果您将这些行添加到您的stream浪文件,它将按预期工作。 config.vm.synced_folder "docker/", "/docker_builds", create: true, mount_options: ["ro"] config.vm.provision "docker" do |d| d.build_image "/docker_builds", args: "-t my-name/my-new-image" d.run "my-name/my-new-image" end