Docker run命令默认情况下为容器使用一个专用的UTS命名空间,因此容器获得了自己的/唯一的主机名。我试图在两个容器之间共享UTS命名空间,但使用docker run命令似乎不可能。
以下是我运行的命令-
docker run -d --name container1 alpine sleep infinity
docker run -it --name container2 --uts container:container1 alpine /bin/sh
错误-
docker: --uts: invalid UTS mode.
根据文档,似乎不可能引用带有--uts标志的容器。其他与命名空间相关的标志(如--pid、--network等(并非如此。它们支持引用其他容器。为什么"容器:<name | id>"--utc标志不支持模式?如何在容器之间共享UTS命名空间,以便它们共享主机名?
我不知道如何在容器之间共享UTS命名空间。但是,如果您的最终目标只是在容器之间共享hostname
,那么如果您不关心网络共享,那么下一步应该可以了:
shubuntu1@shubuntu1:~$ docker run -idt --name container1 ubuntu:18.04 /bin/bash
3b024de861049c63852e5b196b8730c23ccba8454eb894aa1159c046dd35043e
shubuntu1@shubuntu1:~$ docker run -idt --name container2 --net container:container1 ubuntu:18.04 /bin/bash
ee3d696a589bb7aa3000cec7587f4b920088edf829f8cda029b019316451e92f
shubuntu1@shubuntu1:~$ docker exec -it container1 hostname
3b024de86104
shubuntu1@shubuntu1:~$ docker exec -it container2 hostname
3b024de86104
它让container2
使用与container1
相同的网络。仅供参考,以防有帮助。
另一种方法可能只是将/etc/hostname
暴露给bind mounts
或volume
,并让您需要使用的所有容器都使用同一个容器,这样您就不需要共享网络。