设置在Kubernetes中运行的容器的主机名

时间:2015-07-22 01:37:23

标签: docker kubernetes

我想在Kubernetes中运行的容器中设置主机名,但是Kubernetes似乎覆盖了我在运行时设置的任何内容。

我已尝试在Docker镜像中设置/ etc / hostname,我正在使用Kubernetes,并在Dockerfile的CMD中包含echo "host.example.com > /etc/hostname"

似乎有一个泊坞标志-h来设置主机名。有没有办法让我在复制控制器中指定它应该使用特殊标志启动容器?

容器的Debian,如果有帮助的话。

2 个答案:

答案 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主机名的答案,或者我可以对现有容器说一些步骤

  1. 运行

    docker inspect -f '{{ .State.Pid }}' <existing_docker_hostname>
    

    输出将为数字<15580>

  2. 运行此命令以登录到容器

    nsenter --target 15580 --uts
    
  3. 运行此命令以更改主机名

    hostname "node_js"
    

现在退出容器并再次登录,您将看到主机名已更改。