2015-10-19 99 views
1

我正試圖通過docker容器運行opencv。我已經建立了圖像,當運行容器直接將文件傳遞給docker命令

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

和訪問的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 
+0

爲什麼'。/ detect/prediction/prediction'?爲什麼不''/檢測/預測/預測' – VonC

+0

對不起。我後來用它作爲'/ detect'。但是因爲我從我的歷史記錄中複製了粘貼 - 我在這裏粘貼了舊版本。改變它。 – ganaraj

回答

1

泊塢窗EXEC是mainly for debugging purpose

docker exec主要用例正在調試運行的容器,
docker exec基本上是「例外」情況

當您要執行的命令(在這裏python程序),它是最好的只爲該命令運行容器。

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

這樣一來,無需安裝在主機上的巨蟒,你可以使用determined_rosalind只需鍵入:

dr ./prediction 1.png 

這將發動transient容器來運行Python程序,退出並刪除(--rm選項)。

+0

我正在考慮這個..但只是不知道確切的方法來實現這個..我是碼頭工人的新手,我最初通過運行碼頭工運行幾次來開始Docker的一些實例.. --rm選項解決所有這些..這是運行這個..最直觀的方式。 – ganaraj

1

我終於得到它的工作 - 但我不知道「爲什麼」,這使得它的工作。如果有人有,爲什麼也請添加它的解釋..

但我想這可能是一個好主意,張貼在這裏最終的解決方案..

我開始容器下面的命令:

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

現在,我可以將T他預測這個命令,它工作正常

docker exec -it determined_rosalind ./prediction 1.png