当前位置: 代码迷 >> python >> 将文件传递给docker命令
  详细解决方案

将文件传递给docker命令

热度:89   发布时间:2023-06-13 13:35:43.0

我正在尝试通过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 run -v /home/ganaraj/nndetect:/detect -w /detect/prediction -it -d opecv3 bash

现在,我可以使用此命令进行预测了,并且效果很好

docker exec -it determined_rosalind ./prediction 1.png

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选项)。