我创建了一个 GKE 集群,并在其中使用此 yaml 设置创建了带有 2 个容器的单个 pod。
apiVersion: v1
kind: Pod
metadata:
name: django-nginx
spec:
restartPolicy: Never
volumes:
- name: universal
emptyDir: {}
containers:
- name: nginx
image: nginx
volumeMounts:
- name: universal
mountPath: /app_api
- name: django
image: django
volumeMounts:
- name: universal
mountPath: /app_api
我在构建图像时输入了应用程序代码Dockerfile
,其中一部分在这里
FROM nginx
COPY ./app_api /app_api
但是当我连接到容器并进入该目录时,它没有显示任何数据。我希望将该代码复制到该卷。该怎么做?
答案1
/app_api
两个容器中的目录都是空的,因为您在其上安装了 emptyDir (它之所以被称为“空”是有原因的)。
您有两种方法可以在容器之间“共享”文件:
- 在构建阶段将文件添加到两个镜像(nginx 和 django)中,并且不要在 pod 中使用卷。从技术上讲,您将拥有 2 份不同的数据副本,因此一个容器中的更改不会应用于另一个容器。
- 添加初始化容器这会将内容从镜像复制到 emptyDir 卷,在 pod 启动时。类似这样(请注意,它不会从根目录复制“点文件”
/app_api/
):initContainers: - name: init image: nginx command: ["cp" "-pr" "/app_api/*" "/universal/"] volumeMounts: - name: universal mountPath: /universal