Docker
如何在單個 Pod 中的兩個容器之間通過程式碼文件共享卷?
我創建了一個 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
但是當我連接到容器並 ls 進入這個目錄時,它沒有顯示任何數據。我希望將該程式碼複製到該卷中。怎麼做??
/app_api
兩個容器中的目錄都是空的,因為您在其上安裝了 emptyDir(出於某種原因,它被稱為“空”)。您有兩種方法可以在容器之間“共享”文件:
- 在建構階段將文件添加到兩個圖像(nginx 和 django),並且不要在 pod 中使用卷。從技術上講,您將擁有 2 個不同的數據副本,因此一個容器中的更改不會應用於另一個容器。
- 添加初始化容器,該容器將在 pod 啟動時將內容從鏡像複製到 emptyDir 卷。像這樣的東西(注意它不會從根目錄複製“點文件”
/app_api/
):initContainers: - name: init image: nginx command: ["cp" "-pr" "/app_api/*" "/universal/"] volumeMounts: - name: universal mountPath: /universal