使用 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 是个简单但非常实用的命令,平时调试、部署经常用得上。