2014-01-16 3 views
15

Как я могу начать подготовку Docker через внешний файл Docker? Мой Vagrantfile выглядит, как это в настоящее времяКак создать файл Docker от Vagrant

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 

Ваша помощь очень ценится

ответ

28

An option for the Docker provisioner to build images был добавлен в v1.6.0. Загрузите последнюю версию от the Vagrant website.

Как только вы это сделали, поместите файл Docker рядом с вашим 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.

+0

Выполнение этого файла Vagranfile: ошибки в конфигурации этого аппарата. Исправьте следующие ошибки и попробуйте еще раз: Поставщик докеров: * Необходимо установить один из параметров «build_dir» или «image» – Mark

+0

Это для помощника Docker для отображения изображений Docker в рамках создания виртуальной машины. Это не поставщик Docker, который воспроизводит изображения Docker изначально на Linux или в минимальной виртуальной машине на OS X. См. Https://github.com/mitchellh/vagrant/issues/3721#issuecomment-42600273 –

3

один обходной путь через оболочку предоставление:

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

Для грузчика, чтобы построить изображение из dockerfile, dockerfile в вопросе должен быть представлен в гостевой машине и способе обеспечить это, чтобы использовать функцию общих папок бродяг.

По умолчанию vagrant монтирует вашу корневую папку проекта в новый vm под именем/бродягой. Но в вашем случае я предлагаю вам поделиться другой папкой и поставить там свои док-файлы. Также, поделившись другой папкой, вы можете убедиться, что ваши файлы докеров видны только для чтения гостевой машиной.

Теперь предположим, что вы создаете новую папку в корневой директории проектов с именем «докер» и помещаете в нее свои док-файлы. Теперь, если вы установите эту папку на гостевую машину и запустите докер, чтобы использовать этот файл, вы все настроены. если вы добавите эти строки в ваш бродячий файл, он будет работать, как ожидалось. 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

Смежные вопросы