2016-08-30 3 views
3

Я использую контейнер докеров с ubuntu: 14.04 и некоторые приложения на C++, которые я скомпилировал внутри контейнера докеров.Как запустить приложение из контейнера докеров из ОС хоста?

Возможно ли запустить приложение, находящееся внутри контейнера из ОС хоста (в моем случае Win 7)?

Что-то вроде:

docker run <path-to-binary>/mybinary -f 10 -o output.txt

UPDATE:

Да, это возможно

docker run -it <my-image> <path-to-binary>/mybinary

Так в идеале я хочу приложения внутри докер будет так же, как родные приложения на ОС Windows.

Также возможно указать файлы и папку в ОС хоста в качестве входных аргументов для приложения, которое контейнер-докер не может видеть?

UPDATE:

Я попытался установить общую папку в контейнере запуска

docker run -v C:\shared_with_VM:/temp my_image

, а также

docker run -v "C:\shared_with_VM":/temp my_image

Но я получаю сообщение об ошибке:

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Invalid 
bind mount spec "C:\\shared_with_VM:/temp": invalid mode: /temp. 
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'. 

Как сказал here формат правильный путь на Windows, должны быть

docker run -v /c/shared_with_VM:/temp my_image

+0

Попробуйте этот синтаксис в Windows: 'docker run -v // c/Users/mrgloom/Рабочий стол/данные:/data ' – n2o

ответ

3

Я не уверен, если я правильно понимаю ваш вопрос ...

Вы можете mount folders от хоста к контейнеру чтобы сделать его доступным из вашего контейнера:

docker run -v /host/folder:/container/ -it <image> <executable> <arguments> 

Например:

docker run -v /tmp:/tmphost -it ubuntu ls -al /tmphost 
# or in Windows 
docker run -v //c/Users/mrgloom/Desktop/data:/tmphost -it ubuntu ls -al /tmphost 

Это создает папку /container/ в контейнере и связывает его с /host/folder. Затем вы можете делать двусторонние чтения/записи файлов внутри этих папок. Ваш двоичный файл должен указывать на входной файл, который может быть расположен в /container/input.txt

+0

Да, вы понять мой вопрос правильно, но кажется, что команда, указанная вами, неверна. '-v' будет связан с' mybinary'? может быть, порядок должен быть другим? – mrgloom

+0

Я добавил еще один пример, который может сделать его более ясным. – n2o

+0

Хорошо, я понимаю ваш пример, но, кажется, вы используете пути linux? См. Мое обновление. – mrgloom

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