如何在创build图像后更改Docker主机名?

我正在学习docker1.8。 我想创build容器更改容器的主机名。 我试图编辑/etc/host容器内的/etc/host ,每当我attach然后start图像覆盖。 我试图编辑下面的文件,主机名被覆盖。

 [root@localhost ~]# docker inspect high_blackwell | grep hostname "HostnamePath": "/var/lib/docker/containers/15b84f7012383b1af2d4c8c6443506cdff3b19cb1d87d3dfdcb10df126c4eec3/hostname", 

[root @ localhost〜]#

这些答案都没有为我工作

你如何命名docker集装箱?

我不确定是否意味着要设置一个新的容器或正在运行的容器的主机名。 你说你想在创build容器后做,但是你也说你是“开始的形象”。 如果你还没有start编辑图像,你还没有创build容器 – 一个容器是你开始一个图像时得到的。

你正在创build一个新的容器

您可以在命令行上设置主机名:

 docker run --rm -h "example.com" -t -i ubuntu bash # ... root@example:/# hostname example.com 

你的容器已经在运行

这是比较困难的。 您将需要关注这个Docker问题,但在解决问题之前,您只能编辑我认为的/etc/hostshostname命令不起作用。

要更改正在运行的容器的主机名,可以使用“nsenter”命令。 不过,您必须在主机上成为root用户。

我们可以使用“lsns”命令列出主机上的命名空间:

 # lsns NS TYPE NPROCS PID USER COMMAND 4026531836 pid 73 1 root init 4026531837 user 101 1 root init 4026531838 uts 73 1 root init 4026531839 ipc 73 1 root init 4026531840 mnt 72 1 root init 4026531857 mnt 1 14 root kdevtmpfs 4026531957 net 73 1 root init 4026532300 mnt 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c 4026532301 uts 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c 4026532302 ipc 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c 4026532303 pid 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c 4026532305 net 28 1785 root /usr/bin/python /usr/local/bin/supervisord -c 

与1785年的docker是我的docker集装箱。 处理主机名的命名空间types是“uts”,所以让我们在该命名空间中运行主机名:

 # nsenter --target 1785 --uts hostname foo 

现在你的容器中的“主机名”应该产生“foo”!