我想在Kubernetes中运行的容器中设置主机名,但是Kubernetes似乎覆盖了我在运行时设置的任何内容。
我已尝试在Docker镜像中设置/ etc / hostname,我正在使用Kubernetes,并在Dockerfile的CMD中包含echo "host.example.com > /etc/hostname"
。
似乎有一个泊坞标志-h
来设置主机名。有没有办法让我在复制控制器中指定它应该使用特殊标志启动容器?
容器的Debian,如果有帮助的话。
答案 0 :(得分:27)
我之前的回答不正确,使用正确的信息进行了编辑
-h
的{{1}}标志将在您创建容器时设置容器的主机名。
测试出来:docker run
虽然docker run -h test.example.com -it ubuntu /bin/bash
命令没有相同的docker start
或-h
参数。似乎无法更改现有容器的主机名,只能更改图像中的新主机名。
然而w / r / t Kubernetes:有一个关于Kubernetes如何处理主机名的开放issue on Github。 Kubernetes似乎没有直接公开docker的主机名设置,但您可以通过您的pod名称来影响它
答案 1 :(得分:1)
我找到了在容器运行后更改docker主机名的答案,或者我可以对现有容器说一些步骤
运行
docker inspect -f '{{ .State.Pid }}' <existing_docker_hostname>
输出将为数字<15580>
运行此命令以登录到容器
nsenter --target 15580 --uts
运行此命令以更改主机名
hostname "node_js"
现在退出容器并再次登录,您将看到主机名已更改。