如何通过外部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
非常感谢您的帮助
答案 0 :(得分:30)
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