簡體   English   中英

docker 中的體積差異運行和 dockerfile 中的復制

[英]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.

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