docker cp 命令可直接将宿主机文件或目录复制到容器,无需容器运行或进入容器;支持单文件复制、重命名、递归复制目录,并需注意路径、权限及引号使用。

直接用 docker cp 命令就能把宿主机文件复制到容器里,不需要容器正在运行,也不用进容器,一条命令搞定。
确认容器名称或 ID
先查清楚目标容器的标识:
- 运行
docker ps -a查看所有容器(含已停止的) - 找到你要操作的容器,记下它的名字(如
web-server)或 ID 前几位(如a1b2c3d)
复制单个文件到容器指定目录
注意目标路径末尾是否加 /,这决定是“放入目录”还是“重命名文件”:
- 想把
./app.conf放进容器的/etc/nginx/目录下:docker cp ./app.conf web-server:/etc/nginx/ - 想把它复制成容器内一个叫
/etc/nginx/custom.conf的新文件:docker cp ./app.conf web-server:/etc/nginx/custom.conf
复制整个目录到容器
必须加 -r(递归),且容器内上级目录需存在:
- 复制本地
./logs/到容器/var/log/app/:docker cp -r ./logs/ web-server:/var/log/app/ - 如果
/var/log不存在,Docker 只会自动创建app这一级,/var/log必须提前存在
权限与路径注意事项
避免常见失败点:
- 容器内目标路径要有写权限(尤其挂载卷或只读文件系统下可能报错)
- 路径一律用绝对路径(宿主机和容器内都如此)
- 路径含空格时,整个路径用引号包裹,例如:
docker cp "config file.txt" web-server:/app/ - 通配符(如
*.log)也要加引号:docker cp "web-server:/var/log/*.log" ./backup/











