2016-06-24 4 views
1

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

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 

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

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

EDIT: Я пытаюсь установить папку хоста, чтобы восстановить резервные данные с моего ПК в контейнер. В таком случае, какой будет другой подход?

Должен ли я попытаться использовать Flocker?

ответ

2

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

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


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

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

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

+0

Действительно, единственное, что я получаю, это копия моего $ (pwd) на хостеле докеров на AWS. Не понимаю, что вы имеете в виду «запустить Docker в самой OSX-системе». Вы говорите, что это возможно только в Virtual Box? –

+0

Хост-докер, на котором запущен контейнер, должен иметь файловую систему, видимую на этом хосте, чтобы предоставить ее в контейнер, в котором он запущен. Таким образом, чтобы сделать такой объем на основе хоста и обмениваться файлами из вашего окна OSX, лучший способ - запустить контейнер с бета-версией Docker или Virtualbox. Для продвинутых пользователей существуют другие [драйверы токового уровня] (https://github.com/docker/docker/blob/master/docs/extend/plugins.md), которые могут позволить вам подключаться к чему-то другому, кроме хоста, контейнера, или названных томов. – BMitch

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