使用 docker cp 命令是容器與宿主機之間復制文件的常用方法,其操作類似于 linux 的 cp 命令。1. 將宿主機文件復制到容器:語法為 docker cp [宿主機路徑] [容器id/名稱]:[容器內目標路徑],如 docker cp app.py my_container:/var/www/;2. 從容器復制文件到宿主機:語法順序相反,如 docker cp my_container:/var/log/app.log ./logs/,可先進入容器查看文件結構;3. 支持復制整個目錄,如 docker cp src my_container:/home/app/,復制大文件時速度可能受限于系統性能。
在 Docker 容器和宿主機之間復制文件,最常用的方法就是使用 docker cp 命令。這個命令類似于 linux 的 cp 命令,但專門用于在容器和宿主機之間傳輸數據。
1. 把文件從宿主機復制到容器里
語法格式是這樣的:
docker cp [宿主機上的路徑] [容器ID或名稱]:[容器內的目標路徑]
舉個例子,如果你想把本地的 app.py 文件復制到名為 my_container 的容器中的 /var/www/ 目錄下,就可以這樣寫:
docker cp app.py my_container:/var/www/
注意幾點:
- 容器必須存在(可以是運行中,也可以是停止狀態)
- 路徑要寫對,特別是容器內部的路徑,如果目錄不存在會報錯
- 如果你不確定容器名字或 ID,可以用 docker ps 查看當前運行的容器,或者用 docker ps -a 看所有容器
2. 把文件從容器復制回宿主機
反過來也是一樣操作,只是順序換一下:
docker cp [容器ID或名稱]:[容器內的文件路徑] [宿主機上的目標路徑]
比如你想把容器里的 /var/log/app.log 拿出來保存到當前目錄下的 logs 文件夾:
docker cp my_container:/var/log/app.log ./logs/
這里有個小技巧:如果你不知道容器里具體有什么文件,可以先進入容器看看:
docker exec -it my_container /bin/bash
然后用 ls 找到你要復制的文件路徑,再退出來執行 docker cp。
3. 復制整個目錄也一樣操作
不管是復制單個文件還是整個目錄,docker cp 都支持。比如復制整個 src 文件夾進去:
docker cp src my_container:/home/app/
它會自動把整個目錄結構一起復制進去。反過來也一樣,你可以從容器里復制出一個目錄。
需要注意的是:復制大文件或大量文件時可能會有點慢,這是正常現象,取決于你的系統性能和文件大小。
基本上就這些。只要記住方向和路徑就行,docker cp 是個簡單但非常實用的命令,平時調試、部署經常用得上。