问题描述
我正在尝试通过docker容器运行opencv。 我已经构建了图像并在直接运行容器时
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
1楼
我终于使它起作用了,但是我不确定“为什么”使它起作用。如果有人对为什么有解释,也请添加它。
但是我认为在这里发布最终解决方案可能是个好主意。
我使用以下命令启动了容器:
docker run -v /home/ganaraj/nndetect:/detect -w /detect/prediction -it -d opecv3 bash
现在,我可以使用此命令进行预测了,并且效果很好
docker exec -it determined_rosalind ./prediction 1.png
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
的rosalind:
dr ./prediction 1.png
那将启动一个容器来运行python程序,退出并被删除( --rm
选项)。