docker cp
命令要求目标容器必须处于运行状态# 确认容器状态
docker ps -a | grep [容器名/ID]
# 确认路径存在
docker exec [容器名/ID] ls -la [容器内路径]
ls -la [宿主机路径]
# 宿主机 -> 容器
docker cp [宿主机路径] [容器名/ID]:[容器内路径]
# 容器 -> 宿主机
docker cp [容器名/ID]:[容器内路径] [宿主机路径]
# 以root用户执行拷贝
docker exec -u 0 [容器名/ID] chmod 777 [目标路径]
# 或使用特权模式启动容器
docker run --privileged [镜像名]
# 使用docker volume挂载
docker run -v [宿主机路径]:[容器内路径] [镜像名]
# 使用临时容器挂载
docker create --name temp [镜像名]
docker cp [宿主机路径] temp:[容器内路径]
docker start temp
# 检查容器日志
docker logs [容器名/ID]
# 进入容器检查文件系统
docker exec -it [容器名/ID] bash
df -h
mount
lsblk
错误1:Error: No such container:path
# 修复:确认容器名和路径正确
docker cp ./file.txt mycontainer:/wrong/path
→ docker cp ./file.txt mycontainer:/correct/path
错误2:Permission denied
# 修复:提升权限或修改目标路径权限
docker cp ./file.txt mycontainer:/root/
→ docker exec -u 0 mycontainer mkdir -p /data
docker cp ./file.txt mycontainer:/data/
错误3:Container is not running
# 修复:启动容器后再拷贝
docker start mycontainer
docker cp ./file.txt mycontainer:/path/
通过以上分析和解决方案,应该能够解决大多数Docker容器内文件拷贝失败的问题。如果问题仍然存在,可能需要考虑Docker版本、系统环境等更深层次的因素。