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