我有一些容器通过网络docker的IP进行通信。
我可以在运行新容器时使用选项--hostname
或{{1}},但我想为现有容器设置主机名。
有可能吗?
答案 0 :(得分:3)
一种方法是创建网络并在此网络中添加不同的容器。
在网络中添加容器时,您可以使用--alias
的{{1}}选项。像这样:
创建网络:
docker network
在网络中添加容器:
docker network create <my-network-name>
享受。
因此每个容器都可以通过别名查看其他容器(别名用作主机名)。
答案 1 :(得分:0)
通常,您需要停止/重新启动容器,以便使用-h( - hostname)(unless you used --net=host
)
如果您无法停止容器,则可以尝试(在附加的bash会话中)edit its /etc/hostname
。
答案 2 :(得分:0)
创建容器后,主机名是不可变的(尽管从技术上讲,您可以修改/ etc / hostname)。
如另一个答案所示,您无法通过停止或重新启动容器来更改主机名。启动命令没有影响主机名的Docker引擎客户端参数。这无论如何都没有意义,因为启动容器只需在已经创建的容器文件系统中启动ENTRYPOINT进程(即已经编写了/ etc / hostname)。
在创建容器时,可以使用--uts = host参数将容器主机名与主机同步。这共享UTS命名空间。除非您还想共享主机网络设备(即绕过Docker桥),否则我不建议使用--net = host。