ref="/tag/2019/" style="color:#643D3D;font-weight:bold;">Docker复制文件到容器的常用方法
在日常开发中,经常需要把本地配置文件、脚本或者代码推送到正在运行的Docker容器里。比如你改了一个Nginx的配置,想立刻生效,但又不想重建整个容器,这时候直接复制文件就成了最省事的办法。
Docker 提供了 docker cp 命令,可以像使用 cp 一样轻松完成主机和容器之间的文件传输。
从主机复制文件到容器
假设你有一个名为 app.js 的文件,想把它复制进一个正在运行的 Node.js 容器中,容器名字是 my-node-app,目标路径是容器内的 /app/ 目录。
docker cp app.js my-node-app:/app/执行后,文件就会出现在容器的指定位置。这个过程就像用微信传文件一样直接,不需要进容器内部操作。
从容器复制文件到主机
反过来也一样。如果容器里生成了日志或数据文件,你想拿回本地分析,也可以用 docker cp。
docker cp my-node-app:/app/logs/error.log ./local-logs/这条命令会把容器中 /app/logs/error.log 文件复制到宿主机当前目录下的 local-logs 文件夹。
复制整个目录
不只是单个文件,整个文件夹也能复制。比如你要更新静态资源:
docker cp ./static my-node-app:/app/public/这样就把本地的 static 目录内容完整复制到了容器的 /app/public/ 下,适合前端打包后快速部署调试。
注意事项
复制的文件权限会保留原始设置,有时可能导致容器内程序无法读取。遇到这种情况,可以进入容器手动用 chmod 调整权限。
另外,如果容器已经停止,docker cp 依然可用。Docker 会自动挂载容器的文件系统来完成操作,所以不必担心容器状态影响复制。
对于频繁的文件同步需求,比如开发阶段实时更新代码,建议配合 volume 挂载更高效。但临时传一两个文件,docker cp 依然是最快的选择。