如何从Vagrant配置Dockerfile

时间:2014-01-16 16:36:15

标签: vagrant docker

如何通过外部Dockerfile开始配置Docker? 我的Vagrantfile目前看起来像这样

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

非常感谢您的帮助

3 个答案:

答案 0 :(得分:30)

An option for the Docker provisioner to build images中添加了

v1.6.0。从the Vagrant website下载最新版本。

完成后,将一个Dockerfile放在Vagrantfile旁边。将其添加到您的Vagrantfile:

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镜像将构建并运行vagrant up

答案 1 :(得分:3)

一种解决方法是通过shell配置:

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

答案 2 :(得分:1)

对于docker从dockerfile构建映像,必须在guest虚拟机中显示有问题的dockerfile,并确保这是使用vagrant的共享文件夹功能。

默认情况下,vagrant将项目根文件夹安装到名为/ vagrant的新vm下。但在你的情况下,我建议你共享一个不同的文件夹,并将你的dockerfiles放在那里。此外,通过共享不同的文件夹,您可以确保客户机器看到您的dockerfiles只读。

现在假设您在项目根目录中创建一个名为“docker”的新文件夹,并将dockerfiles放入其中。现在,如果您将此文件夹挂载到来宾计算机并指向docker以使用该文件,则您已设置完毕。如果您将这些行添加到您的vagrant文​​件,它将按预期工作。      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