在 `docker node ls` 输出中显示 FQDN 而不是主机名

Display FQDN instead of hostname in `docker node ls` output

当我在 swarm 集群上执行 运行 docker node ls 命令时,结果如下所示

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
0yy1e9u4gl7hipgvltffxv0pn *   host1               Ready               Active              Leader              18.09.5
413mv8n6rd9j2nt48km16mta6     host1               Ready               Active                                  18.09.5

问题是两台服务器的主机名相同,但域名不同。有没有办法让 swarm 使用 FQDN 而不是主机名来识别节点?我认为这是不可能的,但后来我偶然发现 this tutorial 命令的输出似乎正是我正在寻找的。你知道我怎样才能做到吗?

这也取决于节点 hostname 的设置。

默认情况下 docker node ls 显示短主机名(例如 hostname)而不是 FQDN(例如 hostname -f)。您可以将短 hostname 设置为 FQDN 的值,即:sudo hostname $(hostname -f)注意:这仅在下次重新启动之前有效 - man hostname了解更多详情)并更新 /etc/hostname 即:hostname -f |sudo tee /etc/hostname 然后 docker node ls

对所有节点进行清洗、漂洗和重复,您应该会很好:

更新:使用swarmkit你可以在加入swarm集群时设置任意hostname

使用docker swarm join加入swarm时无法设置hostname