我想確保我正確理解 docker: when I build an image from the current directory running
docker build -t imgfile .
在構建映像后更改目錄中檔案的內容時會發生什么?從我嘗試過的情況來看,它似乎也動態地改變了 docker 影像的內容。我認為 docker 映像就像一個 zip 檔案,只能通過 docker 命令或登錄到映像并運行命令來更改。
碼頭檔案是:
FROM lambci/lambda:build-python3.8
WORKDIR /var/task
EXPOSE 8000
RUN echo 'export PS1="\[\e[36m\]zappashell>\[\e[m\] "' >> /root/.bashrc
CMD ["bash"]
docker run 命令是:
docker run -ti -p 8000:8000 -e AWS_PROFILE=zappa -v "$(pwd):/var/task" -v ~/.aws/:/root/.aws --rm zappa-docker-image
謝謝
最好的,
uj5u.com熱心網友回復:
您的docker run命令根本沒有真正運行您的影像。該語法通過系結掛載到主機上的當前目錄來docker run -v $(pwd):/var/task覆寫/var/task映像中的內容。因此,當您在主機上編輯檔案時,容器具有相同的主機目錄(而不是影像中的內容),并且您也會看到容器內部的更改。
你說得對,影像是不可變的。.bashrc除了通常不會使用的檔案之外,您顯示的影像實際上不包含任何內容。您可以嘗試在沒有-v選項的情況下運行映像以查看:
docker run --rm zappa-docker-image ls -al
# just shows `.` and `..` directories
我建議您確保將COPY您的應用程式放入映像中,將其設定CMD為實際運行應用程式,并洗掉-v覆寫其主目錄的選項。如果您的目標是針對具有主機支持資料(例如您的 AWS 憑證)的主機檔案運行主機代碼,那么在您的應用程式和它使用的每個檔案之間引入 Docker 并沒有真正獲得太多好處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481629.html
