有没有办法将一个主机名添加到一个EXISTINGdocker集装箱?

我有一个从networking泊坞窗通过他们的IP通信的angular落。

运行新容器时,我可以使用选项-h或–hostname,但是我想为现有contenair设置主机名。

可能吗 ?

一种方法是在这个networking中创buildnetworking并添加不同的容器。 在networking中添加容器时,可以使用dockernetworking的选项–alias 。 喜欢这个

  • 创build一个networking

docker network create <my-network-name>

  • 在networking中添加容器

docker network connect --alias <hostname-container-1> <my-network-name> <container-1>

docker network connect --alias <hostname-container-2> <my-network-name> <container-2>

docker network connect --alias <hostname-container-3> <my-network-name> <container-3>

  • 玩的开心

所以每个容器可以通过别名看别的容器(别名用作主机名)。

一般来说,你需要停止/重新启动一个容器,以便用-h(–hostname)再次运行它( 除非你使用了--net=host

如果你不能停止容器,你可以尝试(在一个连接的bash会话中) 编辑它的/etc/hostname

一旦容器被创build,主机名是不可变的(虽然技术上你可以修改/ etc / hostname)。

正如另一个答案中所build议的,您不能通过停止或重新启动容器来更改主机名称。 没有影响主机名的start命令的Docker引擎客户端参数。 无论如何,启动容器只是在已经创build的容器文件系统(即/ etc / hostname已经写入)中启动ENTRYPOINT过程,这是没有任何意义的。

创build容器时,可以通过使用–uts = host参数来将容器主机名与主机同步。 这共享UTS命名空间。 我不会推荐–net =主机,除非你也想共享主机networking设备(即绕过Docker桥)。