Docker拷貝文件詳解

一、從Docker拷貝文件夾到容器

將本地一個目錄拷貝到Docker容器的指定目錄下,使用命令:

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

其中,[OPTIONS] 是可選的選項,可使用選項 -a 來保持文件屬性不變,-L 來跟隨符號鏈接。

SRC_PATH:是源文件或目錄的路徑,也支持使用 ‘-‘ 代表標準輸入輸出或標準錯誤輸出;

CONTAINER:是目標容器的名稱或ID;

DEST_PATH:是指定在容器中的目標文件或目錄路徑。

例如,將本地 /home/user1/sourcedir 目錄拷貝到名為 mycontainer 的 Docker 容器中的 /home/user2/targetdir 目錄下,使用命令:

docker cp /home/user1/sourcedir mycontainer:/home/user2/targetdir

二、拷貝文件到Docker容器

將本地的一個文件拷貝到Docker容器中的指定目錄下,同樣也是使用 docker cp 命令。

例如,將本地的 /home/user1/sourcefile 文件拷貝到名為 mycontainer 的 Docker 容器中的 /home/user2/targetdir 目錄下,使用命令:

docker cp /home/user1/sourcefile mycontainer:/home/user2/targetdir

三、Docker拷貝文件到本地

將Docker容器中的一個文件拷貝到本地機器上的指定目錄下,使用命令:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

其中,[OPTIONS] 是可選的選項,跟上面一樣,可以使用選項 -a 來保持文件屬性不變,-L 來跟隨符號鏈接。

CONTAINER:是源容器的名稱或ID;

SRC_PATH:是源文件或目錄的路徑,也支持使用 ‘-‘ 代表標準輸入輸出或標準錯誤輸出;

DEST_PATH:是指定在本地的目標文件或目錄路徑。

例如,將名為 mycontainer 的 Docker 容器中的 /home/user2/sourcefile 文件拷貝到本地的 /home/user1/targetdir 目錄下,使用命令:

docker cp mycontainer:/home/user2/sourcefile /home/user1/targetdir

四、Docker拷貝文件進容器

將文件從一個Docker容器拷貝到另一個Docker容器中,可以使用兩次 docker cp 命令,先將源容器的指定文件拷貝到本地,再將本地的文件拷貝到目標容器。例如,將名為 mycontainer1 的 Docker 容器中的文件拷貝到名為 mycontainer2 的 Docker 容器中。 先將名為 mycontainer1 的 Docker 容器中的 /home/user1/sourcefile 文件拷貝到本地的 /home/user1/targetdir 目錄下,使用命令:

docker cp mycontainer1:/home/user1/sourcefile /home/user1/targetdir

然後將本地的 /home/user1/targetdir/sourcefile 文件拷貝到名為 mycontainer2 的 Docker 容器中的 /home/user2/targetdir 目錄下,使用命令:

docker cp /home/user1/targetdir/sourcefile mycontainer2:/home/user2/targetdir

五、Docker拷貝文件夾

將本地的一個目錄拷貝到Docker容器中的指定目錄下,和拷貝文件夾一樣,使用 docker cp 命令。例如,將本地 /home/user1/sourcedir 目錄拷貝到名為 mycontainer 的 Docker 容器中的 /home/user2/targetdir 目錄下,使用命令:

docker cp /home/user1/sourcedir mycontainer:/home/user2/targetdir

六、Docker拷貝文件限制

Docker在拷貝文件的時候,有以下幾點限制:

1、只能拷貝文件,無法拷貝軟鏈接和目錄。因此,如果要拷貝軟鏈接或目錄,需要藉助 tar 命令來進行打包和解包,再使用 docker cp 命令進行拷貝。

2、不能拷貝到運行中的容器,只能拷貝到已停止的容器。

3、Docker 1.8 及更早版本無法使用 docker cp 命令。可以使用 docker-enter 或 nsenter 工具進入容器後,再使用 cp 命令拷貝文件。

七、Docker拷貝文件到鏡像

Docker提供了 docker commit 命令可以將容器新的狀態保存為一個鏡像,但是不能直接將一個文件添加到鏡像中。要將一個文件添加到鏡像中,需要在容器中添加該文件,然後再使用 docker commit 命令。

八、Docker拷貝文件到宿主機

將一個文件從Docker容器中拷貝到宿主機上,可以使用 docker cp 命令,如下所示:

docker cp CONTAINER:/CONTAINER_PATH HOST_DEST_PATH

其中 CONTAINER 是 Docker 容器的名稱或者ID,CONTAINER_PATH 是Docker 容器中的文件路徑,HOST_DEST_PATH 是拷貝文件要保存在宿主機上的路徑。

例如,將名為 mycontainer 的 Docker 容器中的 /app/data.txt 文件拷貝到宿主機 /tmp/data.txt 文件中,執行如下命令:

docker cp mycontainer:/app/data.txt /tmp/data.txt

九、Docker拷貝文件命令

使用 Docker 容器來操作文件時,可以參考以下命令:

docker ps -a # 列出所有容器,包括已停止的容器
docker exec -it CONTAINER /bin/bash # 進入 Docker 容器的命令,CONTAINER 為容器名稱或ID
cp SOURCE_FILE DEST_FILE # 複製文件,可以使用相對路徑或絕對路徑

十、Docker拷貝文件時修改許可權選項

使用 docker cp 命令拷貝文件時,可以使用 -p 選項來保留文件的許可權。例如,將本地的 /home/user1/sourcefile 文件拷貝到名為 mycontainer 的 Docker 容器中的 /home/user2/targetdir 目錄下,並保持文件的許可權,使用命令:

docker cp -p /home/user1/sourcefile mycontainer:/home/user2/targetdir

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256339.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:40
下一篇 2024-12-15 12:40

相關推薦

發表回復

登錄後才能評論