如何使用环境变量将主机名 and/or ip 地址发送到自己的容器中

How to send hostname and/or ip address into own container using environment variables

我目前在 swarm 模式下使用 docker,我想使用环境变量将容器的主机名 and/or ip 地址发送到所述容器中。

version: "3"
services:
  test:
    image: someimage
    deploy: 
      replicas: 2
      restart_policy:
        condition: on-failure
    environment:
      - HOSTNAME=test
    networks:
      - my-network
networks:
  my-network:
    external:
      name: my-network

我尝试使用上面的示例,但它不起作用。目标是每个副本都有自己的主机名 and/or IP 地址。我怎样才能做到这一点?

每个容器都有一个与其短 ID 相同的主机名,已在容器中设置为变量 HOSTNAME。

如果您尝试直接从 docker 网络上的其他容器访问副本,您可以使用反向查找(nslookup、dig)任务。获取 IP 列表(您不应在配置或撰写文件中对其进行硬编码)

如果要将主机的主机名注入到服务任务中,可以使用templates in compose