Не удается смонтировать папку HOST в контейнер Amazon Docker?

Я использую экземпляр EC2 для запуска докера. На моем локальном компьютере с OSX я использую докер-машину для создания контейнеров и томов. Однако, когда я пытаюсь подключить локальную папку к любому контейнеру, это невозможно.

docker create -v /data --name data-only-container ubuntu /bin/true
docker run -it --volumes-from data-only-container -v $(pwd)/data:/backup ubuntu bash

С помощью первой команды я создаю контейнер только для данных, и я выполняю вторую команду, чтобы попасть в контейнер, который должен иметь тома контейнера только для данных и тот, который я пытаюсь смонтировать, однако при доступе к нему папка / резервная копия пуста

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: я пытаюсь смонтировать папку хоста, чтобы восстановить резервные копии данных с моего ПК в контейнер. В таком случае, какой будет другой подход?

Попробую ли я использовать Flocker?


person Lt.    schedule 24.06.2016    source источник


Ответы (1)


Том хоста, смонтированный с помощью -v /path/to/dir:/container/mnt, монтирует каталог с хоста докера внутри контейнера. Когда вы запускаете эту команду в своей системе OSX, $(pwd)/data будет ссылаться на каталог на вашем локальном компьютере, который не существует на хосте докера, экземпляре EC2. Если вы войдете в свой экземпляр EC2, вы, скорее всего, обнаружите, что каталог $(pwd)/data создан там и пуст.

Если вы хотите смонтировать папки из вашей системы OSX в контейнер докеров, вам нужно запустить Docker в самой системе OSX.


Редактировать: Чтобы ответить на добавленный вопрос о том, как переместить данные в ваш контейнер в облаке, часто есть способы переместить ваши данные к самому облачному провайдеру, за пределы докера, а затем включить их непосредственно в контейнер. Чтобы использовать только докер, вы можете сделать что-то вроде:

tar -cC /source . | \
docker run --rm -i -v app-data:/target busybox \
  /bin/sh -c "tar -xC /target"

Это загрузит ваши данные с помощью tar по каналу в именованный том на вашем хосте докеров. Затем вы можете включить именованный том «данные приложения» в любые другие контейнеры. Если вам нужно сделать это несколько раз с большими наборами данных, создание контейнера rsync будет более эффективным.

person BMitch    schedule 24.06.2016
comment
Действительно, единственное, что я получаю, — это копия моего $(pwd) на хосте докера на AWS. Не понимаю, что вы имеете в виду под запуском Docker в самой системе OSX. Вы говорите, что это возможно только для Virtual Box? - person Lt.; 24.06.2016
comment
Хост докера, на котором запущен контейнер, должен иметь видимую файловую систему на этом хосте, чтобы иметь возможность поделиться ею с контейнером, на котором он работает. Таким образом, чтобы сделать такой том на основе хоста и обмениваться файлами из вашего окна OSX, лучше всего запустить контейнер с бета-версией Docker или Virtualbox. Для опытных пользователей есть другие драйверы тома docker. это может позволить вам подключиться к чему-то другому, кроме хоста, контейнера или именованных томов. - person BMitch; 25.06.2016