首页/云/Docker 容器速查/docker cp 宿主与容器之间复制文件
基础命令50 条

docker cp 宿主与容器之间复制文件

在宿主机与容器之间双向复制文件/目录,支持已停止容器;临时改配置、导出产物、排查现场都用它。

Docker 容器速查云更新于 2026-10-13

docker cp 是什么

在宿主机与容器之间双向复制文件或目录,用的是容器标识加路径的写法,方向由参数顺序决定。它不要求容器处于运行状态,这一点很实用:容器起不来时照样可以把日志、配置或产物取出来分析。

基本信息

语法docker cp [选项] 源 目标,其中一端写成容器加路径
方向进出双向,写在前面的为源,写在后面的为目标
前提容器存在即可,运行中与已停止都支持
常用选项-a 保留权限与属主 -L 跟随符号链接
路径语义目录复制的层级规则与常规复制命令接近,注意源目录结尾斜杠

典型使用场景

  • 导出排查材料:把容器里的日志、配置、转储文件取出来分析
  • 备份配置:改配置前先把容器内的原文件复制出来留档
  • 临时改配置:把本地修改好的配置文件复制进去,重启进程验证效果
  • 取出构建产物:一次性容器里生成的产物复制到宿主后即可删除容器
  • 容器起不来时抢救数据:运行不起来也能复制文件,避免数据随容器删除丢失

常用示例

常用示例
docker cp ./nginx.conf web:/etc/nginx/conf.d/default.conf   # 复制进容器
docker cp web:/etc/nginx/nginx.conf ./nginx.conf.bak        # 复制出来备份
docker cp -a ./data web:/app/data                           # 保留权限复制目录
docker cp web:/var/log/app.log -  > app.log                 # 也可输出到标准输出
docker cp web:/app/dist ./dist                              # 取出产物

常见用途对照

目标写法要点注意事项
改动配置宿主文件复制到容器内目标路径复制后要让应用重载,否则进程里仍是旧配置
导出日志容器路径复制到宿主目录先确认日志没有被轮转删掉
抢救数据容器数据目录复制到宿主数据目录较大时先在容器内打包再复制
取出产物容器内产物目录复制到宿主确认产物完整,避免只复制了部分文件
批量导出循环对多个容器执行命名与路径要一致,避免覆盖同名文件

替换配置的正确步骤

  • 先把容器里的原文件复制出来留档,出问题可以还原
  • 把新文件复制进去,确认路径与文件名完全一致
  • 在容器内校验配置语法,避免改坏后直接重启导致服务不启动
  • 用应用提供的方式重载或重启进程,让新配置生效
  • 验证功能正常后,把改动写回镜像或挂载目录,避免下次重建丢失
复制进容器的改动只影响当前实例,容器被重建或删除后就没了。生产环境的配置变更应落到镜像构建或宿主挂载目录上。
权限保留选项在跨平台复制时行为不完全一致,属主与权限可能出现偏差,复制后核对一下目标文件的属主。

易错点

  • 复制完配置没有让应用重载,容器里是新文件、进程里还是老配置,白白怀疑文件有问题
  • 把改动只留在容器可写层里,容器一重建改动全部丢失
  • 复制目录时忽略了源路径结尾斜杠带来的层级差异,结果多一层或少一层目录
  • 在宿主与容器之间反复复制大文件,磁盘占用同时增长两处

数据来源与参考

  • Docker 官方 CLI 参考:docker cp(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌