我正在寻找一种模式,允许在Kubernetes的同一个pod上运行的两个容器之间共享卷.
我的用例是:我在docker容器中运行了一个Ruby on Rails应用程序.docker镜像包含/app/<app-name>/public目录中的静态资源,我需要从同一pod中运行的nginx容器访问这些资源.
在"vanilla"docker中,我会用--volumes-fromflag来共享这个目录:
docker run --name app -v /app/<app-dir>/public <app-image>
docker run --volumes-from app nginx
Run Code Online (Sandbox Code Playgroud)
阅读此文档后:https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/volumes.md 我试过这个(只提供相关条目):
spec:
containers:
- image: <app-image>
name: <app-name>
volumeMounts:
- mountPath: /app/<app-name>/public
name: assets
- image: nginx
name: nginx
volumeMounts:
- mountPath: /var/www/html
name: assets
readOnly: true
volumes:
- name: assets
hostPath:
path: /tmp/assets
Run Code Online (Sandbox Code Playgroud)
但:
/tmp/assets节点存在,它也是空的/app/<app-name>/public app容器内部也是空的作为一种解决方法,我将尝试在应用程序容器启动时填充共享目录(仅限cp /app/<app-name>/public/*于共享目录),但我真的不喜欢这个想法.
问题:如何模仿--volumes-fromKubernetes,或者如果没有直接对应物,我如何将文件从一个容器共享到另一个容器中运行?
apiVersion: v1beta3
Client Version: version.Info{Major:"0", Minor:"17", GitVersion:"v0.17.0", …Run Code Online (Sandbox Code Playgroud)