将文件从Docker卷导出到另一个目录
我有一个Python代码,从文件中读取数据,并做一些计算,并将结果保存到输出文件。 该代码还将日志保存在日志文件中。 所以在我目前的目录中,我有下面的文件:
1. code.py --> The main python application 2. input.json --> This json file is used to take input data 3. output.json --> The output data is saved in this file. 4. logfile.log --> This file saves the log.
以上所有文件都在Application
目录中。 完整path是/home/user/Projects/Application/
。 现在,当我运行code.py
我得到了预期的结果。 所以我通过使用下面的Dockerfile
将上面的代码转换成Dockerfile
:
FROM python:3 ADD code.py / ADD input.json / ADD output.json / ADD logfile.log / CMD [ "python3", "./code.py" ]
当我运行docker容器时,运行正常,但是我看不到output.json
和logfile.log
的输出数据和日志。 然后我在文件系统中search这些文件,并在以下目录中find这些文件:
/var/lib/docker/overlay2/7c237c143f9f2e711832daccecdfb29abaf1e37a4714f34f34870e0ee4b1af07/diff/home/user/Projects/Application/
我所有的文件都在这个目录下 我检查了日志和数据,它在那里。 然后我明白,所有的文件将被保存在docker卷内,而不是在我们当前的目录。
有什么办法可以保留我的当前目录/home/user/Projects/Application/
的文件和所有数据,而不是docker,因为这样可以很容易地检查输出。
谢谢
你可以尝试运行你的容器如下:[你可能不需要build立你的形象]
docker run --rm -v /home/user/Projects/Application/:/home/user/Projects/Application/ -d python:3 /home/user/Projects/Application/code.py
-v
; 绑定本地文件夹到您的容器在/ home / user / Projects / Application /。
如果你不需要,可以随时取出--rm
。
请确保code.py
将日志写入/home/user/Projects/Application/logfile.log
要validation文件和文件夹是不是通过运行命令: docker run --rm -v /home/user/Projects/Application/:/home/user/Projects/Application/ -d python:3 sh
这将使你在一个terminal,你可以列出文件,并确保所需的文件和configuration在那里。
这些文件位于Docker覆盖卷下,因为您没有进行卷装入。 为了克服这个问题,你可以修改你的Dockerfile,使其看起来类似于:
FROM python:3 RUN mkdir /app ADD code.py /app ADD input.json /app ADD output.json /app ADD logfile.log /app WORKDIR /app VOLUME /app CMD [ "python3", "./code.py" ]
然后在你的docker run命令中,确保你通过这个选项:
-v /home/user/Projects/Application:/app
有关容器选项的更多信息, 请访问https://www.aquasec.com/wiki/display/containers/Docker+Containers 。
如果您使用的是docker compose,则需要添加:
volumes: - /home/user/Projects/Application: /var/www/app
- 在Docker容器上安装rdiff
- 有什么方法可以确保您在stream模式下从docker-py日志逐行读取吗?
- 用Python SDK创buildDocker容器并在其中执行命令
- PDAL:无法创build“裁剪”types的筛选器阶段
- “在jpeg上找不到头文件或库文件”在Alpine Linux上安装Pillow
- 使用GitLab CI与Python的“onbuild”图像,requirements.txt中的包似乎没有安装
- Docker-compose SystaxError:parsing时意外的EOF
- 在给定的docker-compose容器中执行Python脚本
- Docker镜像build立在笔记本电脑上,而不是数字海洋 – 我对Docker的理解已经破灭