我正在尝试通过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
最佳答案
docker exec是mainly for debugging purpose。
当您要执行命令(此处为python程序)时,最好仅针对该命令运行容器。
alias dr='docker run -v /home/ganaraj/nndetect:/detect -w /detect/prediction -it --rm opecv3'
这样,无需在主机上安装python,您只需输入以下内容即可使用
determined_rosalind
:dr ./prediction 1.png
那将启动一个transient容器来运行python程序,退出并被删除(
--rm
选项)。关于python - 将文件传递给docker命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33218064/