如果我想在容器done()
内运行容器B
(重用Docker守护进程),我可以绑定装挂A
和/var/run/docker.sock
并可以愉快地调用{ /usr/bin/docker
中的{1}}。
现在,我想在docker run
和A
之间共享一个k8s的体积。为此,我想到了在A
中创建一个emptyDir卷,并使用B
将其传递到A
。但这不起作用,因为emptyDir卷似乎不是Docker卷(在运行B
时不会出现)。
下面的代码段将显示未显示docker run -v
的卷的列表:
docker volume ls
所以问题是:有什么方法可以定义在k8s和docker中都可用的卷?
答案 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
,这正是我们想要的。