Docker卷挂载异常:宿主机文件缺失仅显示星号
问题排查与解决
1. 宿主机目录下存在名为*的文件
直接在宿主机执行以下命令,确认目录内的真实文件情况:
ls -la /tmp/folder/
如果输出里确实有一个文件名是*的文件,那容器内显示的结果是正常的,不存在文件缺失问题。
2. 挂载路径的斜杠问题
你命令中宿主机路径末尾带了斜杠/tmp/folder/,虽然Docker通常能正确处理,但可以尝试去掉末尾斜杠重新挂载测试:
docker run --rm -it -v /tmp/folder:/folder --entrypoint /bin/sh image
3. 容器内ls命令被别名覆盖或异常
在容器内执行绝对路径的ls命令,排除别名干扰:
/bin/ls /folder
如果这个命令能正常显示文件,说明当前shell的ls被设置了别名(比如alias ls='ls *'),导致空目录下执行ls会输出*。可以用unalias ls取消别名。
4. 权限或SELinux限制
宿主机文件权限不足或SELinux策略可能阻止容器读取挂载文件:
- 在宿主机查看文件权限和SELinux上下文:
ls -lZ /tmp/folder/ - 尝试挂载时添加
Z选项修复SELinux上下文:docker run --rm -it -v /tmp/folder/:/folder:Z --entrypoint /bin/sh image
5. 误执行带通配符的命令
确认你在容器内执行的是ls /folder而非ls /folder/*——后者在空目录下会因为没有匹配到文件,直接输出通配符*。
内容的提问来源于stack exchange,提问作者user3472
相关产品推荐
相关产品推荐

