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