将文件传递给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