簡體   English   中英

將文件從Docker卷導出到另一個目錄

[英]Exporting files from docker volume to another directory

我有一個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 完整路徑為/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.jsonlogfile.log 然后,我在文件系統中搜索了這些文件,並在以下目錄中找到了這些文件:

/var/lib/docker/overlay2/7c237c143f9f2e711832daccecdfb29abaf1e37a4714f34f34870e0ee4b1af07/diff/home/user/Projects/Application/

而我所有的文件都在該目錄中。 我檢查了日志和數據,它在那里。 然后我知道所有文件都將保存在docker卷中,而不是當前目錄中。

有什么辦法可以將文件和所有數據保留在當前目錄/home/user/Projects/Application/而不是docker中,因為這樣我可以輕松地檢查輸出。

謝謝

您可以嘗試按以下方式運行容器:[您可能不需要構建映像]

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

要通過運行命令來驗證文件和文件夾是否不存在: docker run --rm -v /home/user/Projects/Application/:/home/user/Projects/Application/ -d python:3 sh

這將帶您進入終端,您可以列出文件並確保所需的文件和配置在其中。

這些文件位於docker overlay卷下,因為您沒有進行卷掛載。 為了克服這個問題,您可以修改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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM