docker cp命令可直接将容器内文件或目录复制到宿主机,无需进入容器且不依赖容器运行状态;语法为docker cp <容器名或ID>:<容器内绝对路径> <宿主机目标路径>,支持-a保留元数据、-L跟随符号链接,目录复制需注意末尾斜杠区别。
用 docker cp 命令就能把容器里的文件或目录复制到宿主机,不需要进容器、也不依赖容器是否运行。
确认容器名或 ID
先查清楚目标容器的名称或 ID:
- 运行
docker ps查看正在运行的容器(NAME 列就是容器名) - 若容器已停止,加
-a参数:docker ps -a - 容器名和 ID 都可以使用,ID 支持前几位缩写(如
abc123)
基本复制语法(容器 → 宿主机)
格式统一为:docker cp <容器名或ID>:<容器内路径> <宿主机目标路径>
- 复制单个文件:
docker cp nacos:/home/nacos/conf/application.properties ./config-backup/ - 复制整个目录(不带斜杠):
docker cp nacos:/home/nacos/logs ./logs-backup→ 会在宿主机生成logs-backup目录 - 复制目录内容(带末尾斜杠):
docker cp nacos:/home/nacos/logs/ ./logs-backup/→ 把 logs 下所有文件直接放进已有logs-backup/目录
实用选项与注意事项
加参数可提升可靠性:
-
-a(archive):保留权限、所有者、时间戳等属性,适合备份配置或日志docker cp -a nacos:/home/nacos/conf ./conf-archived -
-L:遇到符号链接时,复制它指向的实际文件(不是链接本身) - 目标路径不存在时,Docker 会自动创建父目录;但若目标是文件且已存在,会被直接覆盖
- 宿主机路径用
.表示当前目录,用~可能不生效,建议写绝对路径或明确的相对路径
反向操作:宿主机 → 容器
语法调换位置即可:
docker cp ./new-config.yml nacos:/home/nacos/conf/- 同样支持
-a和-L,适用于更新配置后热同步


















