![](/img/trans.png)
[英]Dockerfile; docker build volumes: changes to volume via ADD or COPY are not discarded
[英]Difference in Volumes in docker run and COPY in dockerfile
如果我做類似的事情
docker run -v /opt/datadir:/var/lib/mysql image
我將容器內的某個位置映射到主機中的某個位置。
這與編寫 Dockerfile 時使用的命令COPY
有何不同?
如果我們編輯該位置內的任何文件,則可以看到主要區別。
假設目錄/opt/datadir
包含一個文件temp.txt
在綁定掛載的情況下,如果您嘗試從主機編輯文件temp.txt
,更改將反映在容器內,反之亦然。
當我們在 Dockerfile 中創建COPY
命令時,它會將內容復制到容器的文件系統中。 因此,在容器內完成的任何更改都不會影響主機上存在的文件。 在這種情況下,如果您希望在主機上所做的更改反映在容器內,那么您需要構建一個 docker 映像並使用更新后的映像運行一個新容器。
什么時候用什么?
對於資源需要頻繁更新的場景,請使用綁定掛載。
例如:我們想為我們的 web 服務器提供一個可能經常更改的配置文件。
如果資源獨立於主機文件系統,請在 dockerfile 中使用COPY
命令。
例如: .tar
、 .zip
、 .war
文件或任何在容器內不需要或很少更新的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.