在 Mac 上使用常规原生 Docker,没有 minikube,我可以从 https://docs.docker.com/engine/admin/volumes/volumes/#start-a-container-with-a-volume 中获取官方示例
运行:
docker run -d \
-it \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest
然后我可以运行 docker inspect devtest
并看到挂载已创建:
"Mounts": [
{
"Type": "volume",
"Name": "myvol2",
"Source": "/var/lib/docker/volumes/myvol2/_data",
"Destination": "/app",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
我可以运行 docker volume ls
并查看 myvol2
如果我使用最新的 minikube,目前是 v0.22.3,有一个新的 minikube 本地 VM:
minikube delete
rm -rf ~/.kube
rm -rf ~/.minikube
minikube start
Starting local Kubernetes v1.7.5 cluster...
然后使用带有 eval $(minikube docker-env)
的 Docker 的 minikube VM 版本,然后重复之前的相同命令:
docker run -d \
-it \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest
然后 docker inspect devtest
返回一个空的 mounts 部分:"Mounts": []
。并且 docker volume ls
没有显示 myvol2
。换句话说,Docker 卷似乎根本无法与 minikube 一起使用。
仅供引用,这是使用 Minikube v0.22.3 时 docker version
的输出:
Client:
Version: 17.06.2-ce
API version: 1.23
Go version: go1.8.3
Git commit: cec0b72
Built: Tue Sep 5 20:12:06 2017
OS/Arch: darwin/amd64
Server:
Version: 1.12.6
API version: 1.24 (minimum version )
Go version: go1.6.4
Git commit: 78d1802
Built: Wed Jan 11 00:23:16 2017
OS/Arch: linux/amd64
Experimental: false
最佳答案
https://github.com/kubernetes/minikube/issues/3001#issuecomment-446055883可能是答案。在这种情况下,卷应该在 minikube env 中。正如他们在上面的链接中提到的:
So you have to mount your folder(host) into minikube(vm) first (use
minikube mount
), so the docker can access it.
关于docker - minikube + Docker 卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964655/