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 節點和服務上的標籤可以動態更新。