2017-01-13 10 views
0

Скажем, у меня виртуальная виртуальная машина, созданная через Vagrant. Затем я снабжу его док-машиной - пока все хорошо: я могу docker-machine ssh в поле и перечислить его в порядке с docker-machine ls.докер-машина и бродяга (в отношении объемов монтирования)

В прошлом, когда я еще не использовал dokcer-machine, мой обычный рабочий процесс включал sshing в виртуальную коробку, установку докера и разворот моих контейнеров.

Насколько я понимаю, это больше не требуется, поскольку я могу управлять контейнерами докеров в виртуальном ящике через докер-машину (и сам докер) извне виртуального окна (по сути, из моей машины win dev).

Вопрос: как смонтировать каталоги изнутри vm в контейнер, когда я запускаю команду докера из-за пределов контейнера?

Пример для дальнейшего уточнения:

1) старый подход. ssh в vbox и запустить

docker run -i -t --net=try-net \ 
--name XXXX \ 
-v ${PWD}/xxxx/yyyy.py:/zzzzz/xxxx/yyyy.py \ 
-d me/image 

2) подход докеров-машин. Я переключаю докер-машину env на коробку. Теперь, как я могу ссылаться на папку в vbox вне поля? Возможно ли это?

С моей победы хоста в Linux, как оболочки:

docker run -v /c/x/y/z:/home --name postgres3 -d postgres:9.5 

получает меня:

C: ответ ошибки от демона: \ Program Files \ Docker \ Docker \ Resources \ Bin \ docker.exe : Неверный параметр привязки привязки "c: \ x \ y \ z \; C: \ Program Files (x86) \ Git \ home": недействительный режим: \ Program Files (x86) \ Git \ home.

+0

Этот параметр тома 'C: \ х \ у \ г \; C: \ Program Files (x86) \ Git \ дома' не совсем то, что вы вводите. Похоже, что оболочка путала путь, чтобы он выглядел как путь к окну, а затем сменил двоеточие на точку с запятой. Вы пробовали процитировать его одинарными кавычками или использовать другую оболочку? – BMitch

+0

Использовал gitbash и получил это. С Canonical на окнах я наткнулся на этот nug https://github.com/docker/machine/issues/3719 -.- –

ответ

1

Если вы запускаете контейнеры с использованием установки док-инструментария, виртуальные машины предварительно настроены для совместного использования папки/Users с хоста в VM, которые затем могут использоваться контейнерами.

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

Редактировать: при условии, что родительская ОС синхронизировала виртуальную машину, любые контейнеры, которые вы запускаете внутри виртуальной машины, будут просто монтировать тома там. Docker-machine на самом деле не является фактором, он просто указывает CLI докера на выбранный хост докера. CLI Докер будет выглядеть следующим образом:

docker run -v /path/on/vm:/path/in/container image 
+0

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

+0

Приношу свои извинения, не понимал, что это ваш вопрос. Как только файлы синхронизируются с виртуальной машиной, вы можете смонтировать их внутри контейнера с помощью пути VM. См. Мое редактирование выше. – BMitch

+0

Хорошо, мы приближаемся :) Это то, что я имел в виду, но когда я предоставляю, я, похоже, получаю двигатель внутри коробки Vagrant. Как и в, я не могу запустить докер изнутри, но я могу запустить докер с моего локального хоста после переключения env на коробку с докер-машиной. I.e .: 'docker-machine.exe env vbox' ' docker run --net = my-net --name postgres -d postgres: 9.5' Эффективно разворачивает контейнер в vbox с моего хоста. В идеале мне нужен способ монтировать папки vbox в контейнер из команды docker выше (которая снова запускается в моем ящике) –

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

  • Нет связанных вопросов^_^