将文件作为参数传递给 Docker 容器

新手上路,请多包涵

一个非常简单的python程序,假设当前目录是/PYTHON,我想将file.txt作为参数传递给python脚本boot.py,这是我的Dockerfile

 FROM python
COPY boot.py ./
COPY file.txt ./
RUN pip install numpy
CMD ["python", "boot.py", "file.txt"]

然后我使用以下命令构建 Docker 容器:

docker build -t boot/latest .

然后运行容器

docker run -t boot:latest python boot.py file.txt

我得到了正确的结果。

但是如果我将另一个文件 file1.txt 复制到当前目录(从不同的目录(不是 /PYTHON)),那么我再次运行容器:

docker run -t boot:latest python boot.py file1.txt

我收到以下错误:

FileNotFoundError:[Errno 2] 没有这样的文件或目录:’file1.txt’

所以错误是由于 file1.txt 不在容器中,但是如果我与朋友共享这个容器并且朋友想要传递一个非常不同的文件作为参数,我该如何编写 Dockerfile 以便任何人使用我的容器可以将非常不同的文件作为参数传递而不会出错?提前致谢。 (我是 Docker 新手)

原文由 mpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 438
1 个回答

它不会那样工作。就像你说的, file1.txt 不在容器中。

解决方法是在运行容器时使用 Docker 卷将文件从主机注入到容器中。

像这样的东西:

 docker run -v /local/path/to/file1.txt:/container/path/to/file1.txt -t boot:latest python boot.py /container/path/to/file1.txt

然后 /local/path/to/file1.txt 将是主机上的路径,它将覆盖容器上的 /container/path/to/file1.txt

原文由 HakRo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题