容器映象用於表示用於封裝應用程式及其所有軟體依賴項的二進位制資料。容器映象可以表示為可執行軟體包,這些軟體包可以獨立執行,並對其執行時環境做出非常明確的假設。通常,我們會建立應用程式的容器映象並將其推送到登錄檔,然後再將其稱為 pod。
Image Names
這些映象可以包含諸如 pause、Kube-API server 或 example/mycontainer 之類的名稱。它們還可以具有類似登錄檔主機名的名稱。例如fictional.registry.example/imagename。它們甚至可以是埠號,如fictional.registry.example:10443/imagename。如果我們未能指定登錄檔主機名,Kubernetes 將假定我們將其作為 Docker 公共登錄檔。在映象名稱之後,我們可以新增標籤。標籤的主要目的是讓我們識別同一映象系列的不同版本。標籤可以由小寫和大寫字母、句點、破折號和下劃線組成。如果我們不指定標籤,則預設將其視為最新標籤。
Image Config File
apiVersion: v1 kind: pod metadata: name: GeeksforGeeks spec: containers: - name: gfg-image image: <docker_image_name> imagePullPolicy: Always command: ["echo", "SUCCESS"] ------------------->
讓我們瞭解完整的配置檔案
- name:GeeksforGeeks:這是從登錄檔中提取影像後建立的容器的名稱
- name:gfg-image:這是我們想要建立的容器的名稱。
- image: <docker_image_name>:-這是我們需要從 Docker Registry 中提取的映象的名稱
- imagePullPolicy:Always:此拉取策略定義,每當我們執行此檔案來建立容器時,它都會再次拉取相同的名稱。
- command:[“echo”,“SUCCESS”]:-如果容器成功建立,那麼當我們訪問該容器時它將顯示一條成功訊息。
Image Commands
- 拉取映像並建立容器
$ kubectl create –f <container_name>
- 檢查日誌
$ kubectl log Tesing_for_Image_pull
Image Updating
當我們建立 StatefulSet、pod Deployment 或任何其他包含 Pod 模板的物件時,如果未明確指定,則該 pod 中所有容器的拉取策略將預設設定為 IfNotPresent。此特定策略使 Kubelet 跳過拉取已存在的映象。
任何容器的 imagePullPolicy 和與映象關聯的標籤都會影響 kubelet 嘗試下載或拉取特定映象的時間。它們甚至可以將 imagePullPolicy 的值設定為 IfNotPresent、Always 或 Never。
當我們使用影像標籤時,如果影像登錄檔要更改該特定影像表示上的標籤程式碼,我們最終可能會得到混合執行新舊程式碼的 Pod。