首页/云/云与容器速查/docker cp 容器与宿主机互拷文件
容器与 Docker106 条

docker cp 容器与宿主机互拷文件

在宿主机与容器之间复制文件/目录:适合应急取配置、捞日志、塞临时补丁;生产持久数据应走卷挂载而非 cp。

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

docker cp 是什么

docker cp 在宿主机与容器之间复制文件或目录,运行中的容器和已停止的容器都支持。它适合应急取配置、捞日志、塞一份临时补丁,但不适合当作部署方式:复制进容器的改动不会写进镜像,容器重建后就消失;写入容器内路径的文件也不会自动出现在卷里。需要长期生效的变更,应该走镜像构建或卷挂载。

基本信息

语法docker cp 容器:路径 宿主机路径(容器到宿主)
方向支持宿主机到容器、容器到宿主机双向复制
运行状态运行中与已停止的容器都支持
能力限制不支持通配符批量匹配;路径按容器内文件系统语义解析
生效范围改动只作用于当前容器,既不写入镜像也不进入卷

典型使用场景

  • 容器启动异常时把配置文件取出来与版本库中的文件做比对
  • 把容器内日志拷到宿主机,做离线分析与长期留存
  • 紧急情况先把修复包拷进容器恢复服务,随后再走正常发布流程
  • 取出容器内生成的产物,例如构建结果、导出的数据文件
  • 排查前先备份容器内文件作为证据,避免容器重建后现场消失

常用示例

常用示例
docker cp myapp:/etc/app/config.yml ./config.yml   # 取出配置对比
docker cp ./hotfix.jar myapp:/app/hotfix.jar   # 临时塞入补丁文件
docker cp myapp:/var/log/app.log ./
docker cp ./conf.d nginx:/etc/nginx/conf.d   # 目录也可以整体复制
# 复制到容器的文件既不在卷里也不在镜像里,容器重建后即丢失

cp 与卷挂载对比

方式持久性适用场景
docker cp仅当前容器生命周期内有效应急取文件、临时补丁、证据留存
命名卷挂载独立于容器,重建后仍在配置与业务数据持久化
宿主目录绑定挂载与宿主文件实时同步开发调试、配置注入
写入镜像容器重建后仍然存在需要固化的正式变更
cp 进容器的改动会随容器删除一起消失,既不写镜像也不进卷:它只是临时手段,正式变更必须走镜像构建或卷挂载。
复制目录时源路径的写法会影响结果语义:目标目录不存在时会按目录原名创建,已经存在时则把内容放进该目录。操作前先确认源与目标写法,避免文件落到意料之外的位置。

易错点

  • 用 cp 覆盖正在运行的配置文件后没有重载进程,改动看起来完全无效
  • 把 cp 当作部署方式,容器重建后补丁全部丢失,服务回到旧状态
  • 拷出的文件属主与权限继承自容器内的用户,宿主上后续处理时遇到权限问题
  • 对不存在或写错的容器内路径执行复制,命令报错信息简短,容易误判为容器异常

数据来源与参考

  • Docker Docs:docker cp

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌