2015-05-12 4 views
2

Я пытаюсь автоматизировать создание изображения Docker через поставщика докеров в бродяжнике.Ошибка синхронизации синхронизированной папки с поставщиком Docker на Vagrant

Мой каталог выглядит следующим образом:

Dockerfile external .vagrant Vagrantfile 

Соответствующие части моего Dockerfile выглядеть следующим образом:

FROM ubuntu:14.04 
MAINTAINER Austin Lopez <[email protected]> 

... 

RUN sudo mv /tmp/external/{my_file}.tar . 
RUN sudo tar xvf {my_file}.tar 

Мои Vagrantfile выглядит следующим образом:

# -*- mode: ruby -*-                                               
# vi: set ft=ruby :                                               
Vagrant.configure(2) do |config| 
    config.vm.synced_folder "./external", "/tmp/external" 

    config.ssh.insert_key = false 

    config.vm.provider "docker" do |d| 
    d.build_dir = "." 
    d.force_host_vm = true 
    end 
end 

Когда я бегу 'vagrant up --provider = docker' Я вижу следующие строки:

==>default: Syncing folders to the host VM... 
    default: Rsyncing folder: ./external => /var/lib/docker/docker_143... 

В моем файле Docker я пытаюсь получить доступ к синхронизированным файлам в/TMP/внешнем каталоге, и я получаю следующее сообщение об ошибке:

cannot stat 'tmp/external/{my_file}': no such file or directory. 

Как синхронизировать папки с помощью поставщику Докера? Я думаю, что Dockerfile запускается до создания файла Docker, но я не уверен. Я также рассматривал Docker Volumes как потенциальное решение, но я думаю, что это для установки папок из VM, а не из главной машины.

+0

У вас есть rsync на главной машине? – ydaetskcoR

+0

У меня есть rsync и успешно синхронизированы папки, когда вы не используете поставщика докеров. Кроме того, ошибка возникает во время сборки автоматической докеры, которую я запускаю с помощью команды «vagrant up --provider = docker». –

+0

О, он не может построить изображение докера, потому что ему нужно что-то в синхронизированной папке? Я думаю, синхронизированная папка доступна только для контейнера докера, как только она будет построена, если я ничего не пропустил. В этом случае ссылка в вашем файле Docker должна ссылаться на './External /' вместо '/ tmp/external /' – ydaetskcoR

ответ

0

Синхронизированная папка доступна для контейнера Docker после создания изображения.

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

+0

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

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