当 Docker 容器无法访问宿主机映射的目录时,通常有以下几种原因:
确保宿主机目录对 Docker 进程可访问:
# 查看目录权限
ls -ld /host/path
# 修改权限(示例)
sudo chmod -R 755 /host/path
sudo chown -R $USER:$USER /host/path
对于 SELinux 系统:
# 临时解决方案(不推荐生产环境)
sudo setenforce 0
# 永久解决方案
sudo chcon -Rt svirt_sandbox_file_t /host/path
对于 AppArmor:
# 可能需要修改或禁用 AppArmor 配置文件
确保在 docker run
命令中正确指定挂载:
# 正确格式
docker run -v /host/path:/container/path image_name
如果容器内应用以特定用户运行:
# 查看容器内用户ID
docker exec -it container_name id
# 修改宿主机目录所有权
sudo chown -R 1000:1000 /host/path # 假设容器用户ID为1000
确保宿主机目录存在:
mkdir -p /host/path
docker run -v /host/path:/container/path:Z image_name
# 或
docker run -v /host/path:/container/path:z image_name
:Z
设置私有非共享标签:z
设置共享标签journalctl -u docker --no-pager -n 50
docker run --privileged -v /host/path:/container/path image_name
docker inspect container_name | grep Mounts -A 20
docker exec -it container_name ls -l /container/path
希望这些解决方案能帮助您解决 Docker 目录映射问题。如果问题仍然存在,请提供更多具体信息(如错误消息、Docker 版本、操作系统等)以便进一步诊断。