在 docker-compose 文件中指定服务标签

yos*_*srO 7 docker docker-compose

在 docker-compose 文件中标记服务时,仅标记创建的容器,而不是服务本身。

我想向使用 docker-compose 文件创建的服务添加标签。在 labels 属性下添加标签时,标签仅添加到相应的容器中,而不添加到服务本身。

在 docker service create 命令的文档中,有两个不同的标签选项:

  • --container-label:指定容器标签
  • --label:指定服务标签

我想知道为什么 docker-compose 文件中的 label 属性仅对应于第一个选项。

version: "3.7"

services:
  zalenium:
    image: zalenium:latest
    hostname: zalenium
    deploy:
      placement:
        constraints:
            - node.role == manager
    labels:
        - "de.zalando.gridRole=hub"
    ports:
        - "4444:4444"
    networks:
        - zalenium
    environment:
        - PULL_SELENIUM_IMAGE=true
        - ZALENIUM_PROXY_CLEANUP_TIMEOUT=1800
    command: ["start", "--swarmOverlayNetwork", "tau_zalenium", "--videoRecordingEnabled", "false"]

networks:
    zalenium:
        driver: overlay
        attachable: true
Run Code Online (Sandbox Code Playgroud)

实际结果:只有创建的容器具有标签“de.zalando.gridRole”

预期结果:服务应具有标签“de.zalando.gridRole”

Mih*_*hai 14

根据 docker-compose参考,您需要像这样指定服务标签:

version: "3.7"
services:
  web:
    image: web
    deploy:
      labels:
        com.example.description: "This label will appear on the web service"
Run Code Online (Sandbox Code Playgroud)

添加部署部分并在其中提及您的标签。

与 docker 一样,在 docker swarm 上部署时也会考虑这些标签。否则它们将被忽略。