一个非常简单的python程序,假设当前目录是/python,我想把file.txt作为参数传递给python script 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] No such file or directory: 'file1.txt'
所以这个错误是因为file1.txt不在容器中,但是如果我和一个朋友共享这个容器,而这个朋友想传递一个非常不同的文件作为参数,那么我该如何编写Dockerfile,以便任何拥有我的容器的人都可以无误地传递非常不同的文件作为参数?提前谢谢。(我是Docker的新手)
如果我正确地理解了这个问题,你就承认文件不在容器中,你就在问如何最好地与世界共享容器,让人们在其中添加自己的内容。
您有两个选项,要么使用docker volumes,这允许您的朋友(和其他相关方)在docker容器中装载本地卷。也就是说,您可以将本地文件系统上的一个文件夹覆盖到容器中的一个文件夹上(当您在本地开发时,这通常也非常漂亮)
或者,同样,根据容器的用途,有人可以扩展您的图像。例如,Dockerfile
选择最适合您的项目的选项。
那样不行。就像你说的,
file1.txt
不在容器中。解决方法是使用Docker卷在运行主机时将文件从主机注入容器。
像这样的:
那么
/local/path/to/file1
将是主机上的路径,它将覆盖容器上的/container/path/to/file.txt
。您也可以从
STDIN
读取脚本,然后使用cat
将数据传递给docker。看看how to get docker container to read from stdin?类似于:
相关问题 更多 >
编程相关推荐