2015-10-19 97 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