将文件传递给docker命令

2024-10-17 08:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: dockerrun命令行bashhomepngversionti
2条回答

docker exec是mainly for debugging purpose。你知道吗

The primary use case of docker exec is debugging running containers,
docker exec basically is for "exceptional" cases

当您想要执行一个命令(这里是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选项)。你知道吗

我终于让它工作了-但我不知道“为什么”这使它工作。。如果有人解释了原因,也请加上。。你知道吗

但我想把最终的解决方案公布在这里也许是个好主意。。你知道吗

我使用以下命令启动容器:

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

现在我可以用这个命令做预测了,效果很好

docker exec -it determined_rosalind ./prediction 1.png

相关问题 更多 >