【问题标题】:Hostname in docker compose file v3 is not accepted不接受 docker compose 文件 v3 中的主机名
【发布时间】:2018-01-16 01:51:14
【问题描述】:

我正在尝试在 AWS EC2 的 docker compose v3 中将容器的主机名设置为 hostname: '{{.Node.Hostname}}'

它以Error response from daemon: rpc error: code = 3 desc = expanding hostname failed: template: expansion:1:7: executing "expansion" at <.Node.Hostname>: can't evaluate field Hostname in type struct { ID string } 失败。

这里是版本详细信息,

Client:
 Version:      17.06.2-ce
 API version:  1.30
 Go version:   go1.8.4
 Git commit:   3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
 Built:        Fri Nov 10 00:50:37 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.2-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.4
 Git commit:   402dd4a/17.06.2-ce
 Built:        Fri Nov 10 00:51:08 2017
 OS/Arch:      linux/amd64
 Experimental: false

根据https://docs.docker.com/compose/compose-file/,17.06.+ 与 docker-compose v3 兼容。

我怎样才能使这个模板工作?我需要升级码头工人吗? 谢谢。

【问题讨论】:

  • 我认为 .Node 这里给你一个节点 ID 而不是一个节点对象。我不确定哪个对象暴露给模板
  • github.com/moby/moby/issues/32561 也许它会在最新的 docker 中可用?

标签: docker amazon-ec2 docker-compose docker-swarm


【解决方案1】:

这现在适用于 Docker 的 compose 文件和 v17.12(2017 年 12 月稳定版本),但仅适用于 Swarm Stacks。

我认为您正在使用 Swarm,因此只需更新您的 docker 版本,您应该会很好,但这里有更多信息供其他人使用,以防他们只是尝试单节点 docker-compose up,这不适用于模板。

docker-composedoes not interpret go templates like Swarm does.

此外,.Node.Hostname 是 Swarm 特定的标签,因此您不能在无权访问该标签的单个服务器上将它与 docker-compose up 一起使用。

只是为了验证,当我使用这个撰写文件时:

version: "3.4"

services:
  nginx:
    image: nginx
    hostname: '{{.Node.Hostname}}'

在 docker-compose 中,这是我得到的:

docker-compose up -d
docker-compose exec nginx hostname
{{.Node.Hostname}}

如果我在 Swarm Stacks 中使用该文件:

docker stack deploy -c docker-compose.yml hn
# find the node and container ID of that service task
# found them on node 1 with hostname "swarm1"
docker exec 0a087 hostname
swarm1

如果您需要在单个节点中使用docker-compose 并将主机名获取到撰写文件中,可以使用variable substitution,然后将主机名设置为变量,然后docker-compose up 将替换撰写文件中的变量.

【讨论】:

  • 谢谢。我在 swarm 模式下使用它,在全局模式下部署 cadvisor
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
相关资源
最近更新 更多