如何正确使用docker cp?主机向容器复制文件失败求助
问题分析与解决
首先,咱们先揪出你操作里的核心问题:
1. 相对路径 vs 绝对路径搞混了!
你进入容器后执行的ls my_folder,是在当前工作目录(容器里的~,一般是/root或者容器用户的home目录)下查看名为my_folder的文件夹;但你用docker cp时写的/my_folder,是指容器根目录下的文件夹——这俩根本不是同一个地方!Docker自然会提示找不到这个目录。
2. 没提前确认目标路径的绝对位置
在执行docker cp前,你没明确容器里my_folder的真实绝对路径,仅凭相对路径的判断就用了根目录下的绝对路径,导致命令指向了不存在的目录。
解决步骤
第一步:确认容器里my_folder的绝对路径
先进入容器,用以下命令搞清楚它的真实位置:
docker exec -it my_container bash # 先看当前工作目录是什么 pwd # 查看my_folder的绝对路径 realpath my_folder
比如如果pwd输出是/root,那my_folder的绝对路径就是/root/my_folder。
第二步:用正确路径执行docker cp
根据刚才得到的绝对路径,修改你的复制命令:
# 假设绝对路径是/root/my_folder docker cp ex.txt my_container:/root/my_folder/
或者,如果你想直接用容器的默认工作目录作为基准,也可以省略路径前的/:
docker cp ex.txt my_container:my_folder/
额外情况:如果确实要放到根目录下的/my_folder
如果你的目标是把文件放到容器根目录下的my_folder,那你得先在容器里创建这个目录:
docker exec -it my_container mkdir -p /my_folder
之后再执行docker cp ex.txt my_container:/my_folder/就没问题了。
内容的提问来源于stack exchange,提问作者xava




