在宿主与容器之间搬文件
docker compose cp 用来在服务容器与宿主机之间复制文件:取出容器里的日志与配置、把本地文件放进容器、导出数据目录都用它。方向看冒号在哪一侧——冒号前是服务名时是导出,冒号前是本地路径时是导入。服务存在多个副本时,操作目标默认是第一个容器,这一点在排查时要留意。
基本信息
| 语法 | docker compose cp 服务:容器内路径 宿主路径,反向写法同理 |
|---|---|
| 方向判断 | 看冒号位于哪一侧 |
| 命令来源 | Compose v2 提供,老版本需用 docker cp |
| 多副本 | 默认作用于第一个容器 |
典型使用场景
- 取配置文件:把容器里实际生效的配置导出来与仓库里的版本对比
- 放临时文件:调试期间替换某个配置或脚本,避免重建镜像
- 导出日志:容器内日志写文件而非标准输出时,取出来分析
- 收集产物:任务型容器生成报告后导出到宿主
- 补数据文件:把初始化数据放入容器做一次性导入
复制示例
复制示例
# 容器导出到宿主
docker compose cp web:/etc/nginx/nginx.conf ./nginx.conf.bak
# 宿主导入到容器
docker compose cp ./nginx.conf web:/etc/nginx/conf.d/default.conf
# 导出整个目录
docker compose cp web:/var/log/app ./logs/
# 导入后让服务重新读取配置
docker compose exec web nginx -s reload方向与用途
| 写法 | 方向 | 典型用途 |
|---|---|---|
| cp 服务:/路径 ./本地 | 容器到宿主 | 取日志、导出配置、收集产物 |
| cp ./本地 服务:/路径 | 宿主到容器 | 临时放配置与脚本、补数据文件 |
| cp 服务:/目录 ./本地目录 | 容器到宿主(目录) | 批量导出日志目录 |
| cp ./目录 服务:/目录 | 宿主到容器(目录) | 一次性导入初始数据 |
复制进容器的文件在容器重建后就没了,需要长期生效的内容要落在镜像或挂载卷里。
覆盖正在被进程使用的配置文件后,通常要重新加载或重启服务才会生效,复制只是一半动作。