是否可以定义在k8s和docker中都可用的卷?

时间:2019-01-08 08:51:54

标签: docker kubernetes docker-volume

如果我想在容器done()内运行容器B(重用Docker守护进程),我可以绑定装挂A/var/run/docker.sock并可以愉快地调用{ /usr/bin/docker中的{1}}。 现在,我想在docker runA之间共享一个k8s的体积。为此,我想到了在A中创建一个emptyDir卷,并使用B将其传递到A。但这不起作用,因为emptyDir卷似乎不是Docker卷(在运行B时不会出现)。

下面的代码段将显示未显示docker run -v的卷的列表:

docker volume ls

所以问题是:有什么方法可以定义在k8s和docker中都可用的卷?

1 个答案:

答案 0 :(得分:2)

为记录起见,我找到了一种解决方法,但是如果您有更好的建议,请随时与我们分享。

上述问题的一种解决方案是挂载hostPath目录D并将该目录绑定到容器B中。

apiVersion: v1 kind: Pod metadata: name: test-pd3 spec: containers: - image: alpine name: test-container command: [ash] args: ["-c", "echo blabla > /home/test.txt ; docker run -v /home:/home --entrypoint ls alpine /home"] volumeMounts: - name: dockersock mountPath: "/var/run/docker.sock" - name: dockerlib mountPath: "/usr/bin/docker" - name: home mountPath: "/home" volumes: - name: dockersock hostPath: path: /var/run/docker.sock - name: dockerlib hostPath: path: /usr/bin/docker - name: home hostPath: path: /home

以上代码段的结果是B现在有了一个/home/test.txt,这正是我们想要的。