如何将本地文件复制到Docker中的Namenode目录?
解决Docker cp文件到Namenode容器后找不到的问题
这个问题的核心是Docker的docker cp命令不支持解析波浪号~作为用户主目录的简写——你写的~/direc1会被Docker当成字面路径(也就是容器根目录下的~文件夹里的direc1),而不是你预期的用户家目录(比如/root/direc1),所以文件实际上被复制到了一个你没去查看的位置,或者如果这个路径不存在,可能直接把文件重命名成了direc1。
下面是具体的解决步骤:
第一步:确认容器内目标目录的绝对路径
先进入Namenode容器的bash终端,查看当前用户的主目录路径:docker exec -it <你的容器ID> bash # 查看当前用户家目录 echo $HOME # 或者直接查看direc1的位置(如果已经创建) ls -l $HOME/direc1比如如果输出是
/root,那目标目录的绝对路径就是/root/direc1。第二步:使用绝对路径执行docker cp命令
退出容器后,用绝对路径重新执行复制命令:docker cp ./ventes.txt <你的容器ID>:/root/direc1/注意路径末尾的
/,如果direc1目录存在,它会把文件放到目录里;如果不存在,Docker会报错(这比之前直接把文件重命名成direc1更直观)。第三步:确保目标目录存在(可选但推荐)
如果还没创建direc1目录,先在容器内创建它:docker exec <你的容器ID> mkdir -p /root/direc1再执行上面的
docker cp命令就万无一失了。
你可以再进入容器查看:
docker exec -it <你的容器ID> bash ls /root/direc1
这次应该能看到ventes.txt文件了。
内容的提问来源于stack exchange,提问作者Abdo Rabah
相关产品推荐
相关产品推荐

