簡體   English   中英

Dockerfile COPY 與“docker run ... cp”

[英]Dockerfile COPY vs "docker run ... cp"

我們有一個構建管道,首先使用 dockerfile 構建 docker。 dockerfile 有許多 COPY 命令。 我們還有一個后續步驟,使用“cp”命令執行 docker 運行,如下所示:

docker 運行 --volume /hostDirA:/containerDirB --workdir /folderB dockerRepo:somebuildnum cp -R /hostDirC/。 /containerDirB

首先,在重點之前,我的理解是 cp 命令正在從一個文件夾復制到另一個文件夾,這兩個文件夾都是容器上的。 這是正確的理解嗎?

其次,當通過 dockerfile 構建的 docker 已經完成 COPY 時,為什么要在 docker 運行中以這種方式完成 cp? 是否有正當理由不將這個 cp 移到 dockerfile 內?

在不知道這些文件的用途的情況下,我們只能胡亂猜測。

卷用於數據持久性,而 COPY 用於運行進程所需但可能被破壞的數據。

為什么將數據復制到卷中而不是使用 COPY 命令的一種可能的有效場景是需要初始化持久數據,並且他們不希望該初始化數據將膨脹添加到容器映像中。 就像我說的,這只是一個瘋狂的猜測。

另一種猜測是 Dockerfile 在開發人員之間共享,並且組之間的初始化數據可能會有所不同,因此一組開發人員可能會將不同的數據復制到卷中。

無論數據是什么,如果您關閉並刪除容器,通過COPY創建的數據將隨容器一起消失,但通過主機上的cp移動到卷中的數據仍保留在掛載的目錄中。 當容器從最初放置在其中的內容運行時,該數據可能已更改,但當您移除容器並從映像中生成新容器時,它不會重置。

您應該詢問開發人員所有文件的用途,以及這些文件是否需要持久化或者它們是否可以只是“短暫的”。 這可能會回答您的問題,即為什么要按原樣復制它們。

暫無
暫無

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

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