передавая файл на окно командной


Я пытаюсь запустить opencv через контейнер docker. Я построил образ и при непосредственном запуске контейнера

docker run -v /home/ganaraj/nndetect:/detect -ti opecv3 bash

И доступ к Башу

$>cd /detect/prediction $>prediction 1.jpg 0

Я действительно получаю ожидаемый результат (конечный 0).

Но на самом деле я хотел бы запустить это как программу командной строки.

Я пробовал и то и другое

docker run -v /home/ganaraj/nndetect:/detect -ti opecv3 /detect/prediction/prediction 1.png

docker run -v /home/ganaraj/nndetect:/detect -ti opecv3 /detect/prediction/prediction /detect/prediction/1.png

Но оба они не дают мне того результата, который я ожидаю от этого.

Что был бы правильный способ сделать это, так что я могу запустить это приложение легко, как инструмент командной строки ( через docker) и получить выходные данные обратно ?

Я тоже пробовал

docker run -v /home/ganaraj/nndetect:/detect -it -d opecv3 bin/bash

А затем:

docker exec -it 3d618d63316c /detect/prediction/prediction /detect/prediction/1.png

Но я все равно получаю тот же пустой ответ.
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 05:37:18 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f4bf5c7
 Built:        Mon Oct 12 05:37:18 UTC 2015
 OS/Arch:      linux/amd64
2   2   2015-10-19 18:16:11

2 ответа:

Docker exec-это в основном для отладки.

Основным вариантом использования docker exec является отладка запущенных контейнеров,
docker exec в основном это для "исключительных" случаев

Когда вы хотите выполнить команду (здесь программа python), лучше всего запустить контейнер только для этой команды.

alias dr='docker run -v /home/ganaraj/nndetect:/detect -w /detect/prediction -it --rm opecv3'

Таким образом, без установки python на вашем хосте, вы можете использовать determined_rosalind просто набрав:

dr ./prediction 1.png

Что бы запустить a переходный период Контейнер для запуска программы python, выхода и удаления (опция--rm).

Я, наконец, получил его работу - но я не уверен, "почему" это заставляет его работать.. Если у кого-то есть объяснение, почему, пожалуйста, добавьте его тоже..

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

Я запустил контейнер со следующей командой:

docker run -v /home/ganaraj/nndetect:/detect -w /detect/prediction -it -d opecv3 bash

И теперь я могу сделать прогноз с помощью этой команды, и это работает нормально

docker exec -it determined_rosalind ./prediction 1.png