首页 > 解决方案 > 主机目录指示为已安装,但在容器中为空 - 检查什么?

问题描述

我在 pod 中运行的 Docker 容器minikube配置了一个从主机的non-empty /home/my_username/useful/dir挂载的目录。kubectl显示了我的期望:

$ kubectl get --namespace=my_namespace pods/my-pod -o json | jq '.spec.volumes[3]'
{
  "hostPath": {
    "path": "/hosthome/my_username/useful/dir",
    "type": "Directory"
  },
  "name": "useful_dir"
}
$ kubectl get --namespace=my_namespace pods/my-pod -o json | jq '.spec.containers[].volumeMounts[3]'
{
  "mountPath": "/dir/in/container",
  "name": "useful_dir",
  "readOnly": true
}

但是在 pod 中,挂载点是空的:

$ kubectl exec --stdin --tty --namespace my_namespace my-pod -- ls /dir/in/container
total 0

我用 , 查看了 pod 的挂载点kubectl exec --stdin --tty --namespace my_namespace my-pod -- findmnt /dir/in/container,然后查看overlay[/hosthome/my_username/useful/dir]. 由此,我得出结论,Docker 已按预期从主机挂载目录。

我直接从 pod 的容器检查挂载点(以 root 身份确保没有权限限制):

$ docker exec -it -u root minikube /bin/bash
root@minikube:/# docker exec -it -u root <container_id> ls /dir/in/container
root@minikube:/#

它没有主机中存在的任何内容。

我应该寻找什么来调查?

标签: dockerkubernetesminikubemount-pointmounted-volumes

解决方案


评论中解决了问题,驱动程序在容器本身内运行 dockerd,因此它没有全局文件系统视图。通过解决minikube mount


推荐阅读