![](/img/trans.png)
[英]Docker Upgrade from v1.11 to v1.12 using apt-get on Ubuntu 14.04.4 LTS
[英]Docker v1.12 can not change hostname by env variable $HOSTNAME
使用以前的docker版本,在我通过向图像发送env变量来更改它之后,“hostname”和“echo $ HOSTNAME”的命令返回相同的内容。
为什么我使用它是因为我想通过调用hostname或$ HOSTNAME将新主机插入/ etc / hosts。 所以我的服务器/应用程序在这个docker中可以获得“真正的”IP地址或我指定的IP地址,而不是docker内部的地址。
在以前的docker版本中, 我可以通过分配env变量HOSTNAME来更改主机名,这将相应地更改主机名。 但现在,使用docker版本1.12。 这种linux动作在linux行为中不起作用。
所以,如果这样写:
version: '2'
services:
test:
build: .
extra_hosts:
thisservice: "192.168.1.7"
environment:
- HOSTNAME=thisservice
image: dockerv1.12-test
Dockerfile:
FROM alpine
CMD sleep 120
通过docker-compose exec test sh
进入docker容器,然后cat /etc/hosts
看起来像这样:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.1.7 thisservice
172.28.0.2 80260fa6667f
而:
$ hostname
80260fa6667f
$ echo $HOSTNAME
thisservice
这是我上面提到的错误行为,并且以前的docker版本没有发生类似这样的事情。
在这种情况下,容器中的服务将不知道我分配的IP但是去了docker内部IP。 这不是我想要的。 而且在我看来并不正确。
我试过Ubuntu 16.04和Centos 7.2; 在我升级docker v1.10之前,两个发行版都按预期工作。 升级后的docker到v1.12.1和v1.12.3之后,两者都“错误”了。
那么在docker v1.12中这是一个bug还是故意用于swarm模式?
我怎么能根据需要更改主机名?
泊坞窗,compose.yml
version: '2'
services:
test:
build: .
hostname: thisservice
image: dockerv1.12-tes
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.