Docker 物件標籤
標籤是一種將中繼資料應用於 Docker 物件的機制,包括
- 映像檔
- 容器
- 本地守護行程
- 磁碟區
- 網路
- Swarm 節點
- Swarm 服務
您可以使用標籤來組織您的映像檔、記錄授權資訊、註釋容器、磁碟區和網路之間的關係,或以任何對您的業務或應用程式有意義的方式使用。
標籤鍵和值
標籤是一個鍵值對,儲存為字串。您可以為一個物件指定多個標籤,但每個鍵在一個物件內必須是唯一的。如果同一個鍵被賦予多個值,則最後寫入的值會覆蓋所有先前的值。
鍵格式建議
標籤鍵是鍵值對的左側。鍵是英數字串,可以包含句點 (.
)、底線 (_
)、斜線 (/
) 和連字號 (-
)。大多數 Docker 使用者使用其他組織建立的映像檔,以下準則有助於防止物件之間的標籤意外重複,尤其是在您打算將標籤用作自動化機制時。
第三方工具的作者應在每個標籤鍵前加上他們擁有的網域的反向 DNS 表示法,例如
com.example.some-label
。未經網域所有者許可,請勿在標籤鍵中使用網域。
com.docker.*
、io.docker.*
和org.dockerproject.*
命名空間由 Docker 保留供內部使用。標籤鍵應以小寫字母開頭和結尾,並且應僅包含小寫英數字元、句點 (
.
) 和連字號 (-
)。不允許連續的句點或連字號。句點 (
.
) 分隔命名空間「欄位」。沒有命名空間的標籤鍵保留供 CLI 使用,允許 CLI 的使用者使用較短的、易於輸入的字串以互動方式標記 Docker 物件。
目前未強制執行這些準則,且其他準則可能適用於特定使用案例。
值準則
標籤值可以包含任何可以表示為字串的資料類型,包括(但不限於)JSON、XML、CSV 或 YAML。唯一的要求是值必須先序列化為字串,使用特定於結構類型的機制。例如,要將 JSON 序列化為字串,您可以使用 JSON.stringify()
JavaScript 方法。
由於 Docker 不會反序列化值,因此您無法在依標籤值查詢或篩選時將 JSON 或 XML 文件視為巢狀結構,除非您將此功能建置到第三方工具中。
管理物件上的標籤
每種類型支援標籤的物件都有新增和管理它們以及使用它們與該類型物件相關的機制。這些連結提供了一個很好的起點,可瞭解如何在 Docker 部署中使用標籤。
映像檔、容器、本地守護行程、磁碟區和網路上的標籤在物件的生命週期內是靜態的。要更改這些標籤,您必須重新建立物件。Swarm 節點和服務上的標籤可以動態更新。