我正在尝试通过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.pngdocker 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/

10-09 20:35