不接受 docker compose 文件 v3 中的主机名

部分

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

它失败了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 兼容。

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

布雷特·费舍尔

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

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

docker-compose 不像 Swarm 那样解释 go 模板

此外,这.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在单个节点中使用并将主机名放入撰写文件,则可能使用变量替换,然后将主机名设置为变量,然后docker-compose up将替换撰写文件中的变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

限制docker-compose v3中的资源

如何在docker-compose中设置主机名?

fopen(); 本地文件上的“不接受远程主机文件访问”?

“ initialize”:方案postgres不接受注册表部分:Docker的postgres:@(或错误的主机名?)(URI :: InvalidURIError)

docker-compose不将主机名添加到/ etc / hosts

等效于Docker Compose v3中的volume_from

静态IP地址在docker compose v3中不起作用

Docker Compose主机名命令不起作用

Docker-compose:设置主机名等于容器运行所在的主机名

docker-compose中的Docker容器无法通过主机名找到其他容器

如何为要在3个不同主机中运行的现有Docker Compose文件设置Docker Swarm?

Django URLField不接受仅主机名的URL

docker compose:使用网桥时不分配主机名

在docker compose中获取主机的主机名

docker-compose在url中解析主机名

从文件中读取变量主机名

Docker Compose主机名DNS查找失败

docker-compose主机名和本地解析

docker-compose:为什么代理和应用服务由于主机名而失败?

如何通过在postgres的pg_hba.conf文件中指定docker-compose主机名来允许连接?

Docker Compose文件中的网络

docker-compose.yml container_name和主机名

docker-compose 副本主机名

Laravel 不接受请求中的文件

了解 docker-compose.yml 中容器的主机名

无法在 docker-compose 中使用主机名访问 rails-api 后端

如何在 docker-compose v3 中设置存储选项?

Postgres 不接受来自使用 docker-compose 的其他容器的任何连接

python 3不接受用名稱打開文件