![](/img/trans.png)
[英]Creating files (pdf, xls) with a python script inside a docker container
[英]python creating directories and writing files inside docker container
我正在編寫現有python腳本的docker文件。
我的碼頭工人文件:
FROM python:2.7.11
ADD ./ test_project/
RUN mkdir /test_project/download/
RUN chmod -R 777 /test_project/download
WORKDIR test_project
RUN ls -ltr
CMD [ "python", "report/test.py"]`
我的python腳本test.py的一部分,用於創建目錄和子目錄
os.makedirs(download_directory)
此處“下載目錄” = / test_project / download / reports / 2017-01-24 /
在本地上的docker外運行時,它將在本地文件系統上創建目錄。
但是,在docker內部運行時,它不會在docker容器中創建目錄。 我查看了docker鏡像中的目錄,它僅包含我從Dockerfile創建的目錄,而沒有應從python腳本創建的子目錄。
對我可能會丟失的東西有任何想法嗎?
---更新---
我發現的另一件事:
當我這樣做時,在運行之后,通過以下方式進入圖像重擊:
docker run --rm -it test_project bash
我沒有看到由python腳本創建的目錄。 但是,在構建項目之后,我首先使用與上述相同的命令進入圖像bash,然后使用以下命令執行腳本:
python test_project/test.py
目錄已創建。
是因為在每個運行容器被銷毀之后,我看不到正在寫入的文件/目錄嗎?
不要使用docker run
,請使用docker exec
。
docker exec
在已運行的容器中運行命令。
每次docker run
都會創建一個新容器。
在這里,您創建了兩個容器。 另外,當您在第二個docker run --rm -it test_project bash
docker run
調用( docker run --rm -it test_project bash
)上啟動“ bash”時,您將覆蓋dockerfile的CMD,因此腳本在創建時不會在該容器上運行。 這就是為什么直到您手動運行python腳本后才看到所需文件的原因(在第二個容器中)。
如果您嘗試登錄使用docker run test_project
創建的容器,請docker run test_project
,那么您需要這樣做:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f357de526da7 test_project "python report/test.py" 5 minutes ago Up 5 minutes imaginary_curie
在這種情況下,我們看到此容器的名稱為'imaginary_curie'
docker exec -it imaginary_curie bash
也可以看看:
docker run --help
和
docker exec --help
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.