有没有办法将主机名添加到现有docker容器中?

有没有办法将主机名添加到现有docker容器中?,docker,docker-machine,Docker,Docker Machine,我有一些容器通过网络docker的IP进行通信 我可以在运行新容器时使用-h或-hostname选项,但我想为现有容器设置主机名 是否可能?通常,您需要停止/重新启动容器,以便使用-h-hostname再次运行它 如果无法停止容器,可以尝试在附加的bash会话中执行和 创建容器后,主机名是不可变的,尽管从技术上讲,您可以修改/etc/hostname 正如另一个答案中所建议的,您不能通过停止或重新启动容器来更改主机名。start命令没有影响主机名的Docker引擎客户端参数。无论如何,这是没有意

我有一些容器通过网络docker的IP进行通信

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


是否可能?

通常,您需要停止/重新启动容器,以便使用-h-hostname再次运行它


如果无法停止容器,可以尝试在附加的bash会话中执行和

创建容器后,主机名是不可变的,尽管从技术上讲,您可以修改/etc/hostname

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


创建容器时,可以使用-uts=host参数将容器主机名与主机同步。这共享UTS命名空间。我不建议使用-net=host,除非您也想共享主机网络设备,即绕过Docker桥。

一种方法是创建网络并在此网络中添加不同的容器。 在网络中添加容器时,可以使用docker network的-alias选项。像这样:

创建网络:

docker network create <my-network-name> 
在网络中添加容器:

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>
享受

因此,每个容器都可以通过别名(别名用作主机名)查看其他容器

出于某些原因,我从守护进程得到:错误响应:名为my centos的端点已存在于网络dns别名网络中。因此,在连接之前,我需要先断开docker网络连接dns别名网络我的centos容器。有可能避免这种情况吗?如果不可能,我们是否知道这种快速网络中断会拒绝TCP会话或在重新连接时重复它们?