一、從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