主机目录指示为已安装,但在容器中为空 - 要检查什么?
Host directory indicated as mounted, but empty in the container - what to check?
我的 Docker 容器 运行 在 minikube
pod 中配置了一个从主机的 非空 /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
我用 kubectl exec --stdin --tty --namespace my_namespace my-pod -- findmnt /dir/in/container
查看了 pod 的挂载点,看到了 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:/#
主机中没有任何内容。
我应该寻找什么来调查?
问题已在评论中解决,驱动程序 运行 dockerd 在容器本身内,因此它没有全局文件系统视图。通过 minikube mount
.
解决
我的 Docker 容器 运行 在 minikube
pod 中配置了一个从主机的 非空 /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
我用 kubectl exec --stdin --tty --namespace my_namespace my-pod -- findmnt /dir/in/container
查看了 pod 的挂载点,看到了 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:/#
主机中没有任何内容。
我应该寻找什么来调查?
问题已在评论中解决,驱动程序 运行 dockerd 在容器本身内,因此它没有全局文件系统视图。通过 minikube mount
.