gpt4 book ai didi

容器运行时Docker从本地系统读取文件

转载 作者:行者123 更新时间:2023-12-04 20:32:23 28 4
gpt4 key购买 nike

我的Dockerfile运行一个python脚本,该脚本需要从本地计算机读取文本文件。
Dockerfile

FROM fedeg/python-vim:2
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
COPY file.txt /data/file.txt
CMD ["python", "run.py"]

在run.py中,有一个函数可以读取文本文件:
def read_file(filename):
lines = [line.rstrip('\n') for line in open(filename)]
return lines

我想知道我是否要将这个图像传递给其他人并且他们运行它,将file.txt已经保存在图像内部,或者当图像为开始了吗?

我想要的是docker在运行镜像的任何计算机上寻找名称 file.txt,以便它可以处理其他file.txt的内容,而不是我从本地计算机提供的file.txt的内容。

最佳答案

正如@herm指出的那样通过构建容器来指出,file.txt存储在容器内。

要实现所需的功能,请从Dockerfile中删除COPY,然后在运行时使用-v选项将包含file.txt的文件夹安装在主机上:

docker run -v /folder/with/file:/data image_name

其中/folder/with/file是包含file.txt的文件夹的路径,而image_name是您的Docker容器的名称。

现在,正在运行的容器中/data的内容将是/folder/with/file文件夹的内容。

编辑:

您也可以只挂载文件:
docker run -v /folder/with/file/file.txt:/data/file.txt image_name

但是请注意,如果您需要编辑文件,这可能会带来问题。请参见 Docker Docs“将主机文件安装为数据卷”

Note: Many tools used to edit files including vi and sed --in-place may result in an inode change. Since Docker v1.1.0, this will produce an error such as “sed: cannot rename ./sedKdJ9Dy: Device or resource busy”. In the case where you want to edit the mounted file, it is often easiest to instead mount the parent directory.

关于容器运行时Docker从本地系统读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com