将文件传递给docker命令

我试图通过docker容器运行opencv。 我已经build立了图像,并直接运行容器

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 

docker执行主要是为了debugging目的 。

docker exec的主要用例是debugging正在运行的容器,
docker exec基本上是为“例外”情况

当你想执行一个命令(在这里是一个python程序)时,最好只为该命令运行一个容器。

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

这样,没有在你的主机上安装python,你可以使用determined_rosalind只需input:

 dr ./prediction 1.png 

这将启动一个瞬态容器来运行python程序,退出并被删除( --rm选项)。

我终于find了工作 – 但我不确定“为什么”这使得它的工作..如果有人有解释为什么请添加它..

但是我认为在这里发布最终解决scheme可能是一个好主意。

我用下面的命令启动了容器:

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

现在我可以用这个命令做出预测,并且工作正常

docker exec -it determined_rosalind ./prediction 1.png