docker容器传入变量解析

avatar 2020年5月7日18:02:24 评论 1,288 次浏览

公司结构比较复杂,服务之间的相互调用为了区别环境,所以在pod中需要定义一下调用的ip,我们在使用pod中的docker容器的时候需要定义一下调用目标服务的ip,这个目标ip我们可以理解一下本地的dns,看下面的实验:

我需要安装一个docker,然后在pull一个系统,这样我们先创建一个容器环境。安装参考:https://www.wulaoer.org/?p=260 ,我已经安装好了,就不多说。

[root@www.wulaoer.org ~]# docker run -it --rm centos /bin/bash
[root@d4c8cee9733f /]# ping wulaoer
ping: wulaoer: Name or service not known

这个镜像中,直接ping wulaoer不能ping通,是因为我的这个变量没有指定ip,下面我在创建容器的时候直接指定。

[root@www.wulaoer.org ~]# docker run -it --add-host=wulaoer:8.8.8.8  --rm centos /bin/bash
[root@3c0347cfcb55 /]# ping wulaoer    
PING wulaoer (8.8.8.8) 56(84) bytes of data.
64 bytes from wulaoer (8.8.8.8): icmp_seq=1 ttl=127 time=43.7 ms
64 bytes from wulaoer (8.8.8.8): icmp_seq=2 ttl=127 time=42.7 ms

这里创建容器的时候使用了参数--add-host=指定了一个dns的ip,如果这里指定的ip不存在,就会ping不通,我们看一下hosts文件中是否有定义的ip。

[root@3c0347cfcb55 /]# 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
8.8.8.8 wulaoer   #指定的dns
172.17.0.2      3c0347cfcb55

如果我们使用的时候可以把wulaoer这个变量添加到相应的应用中,这样每次更新的时候就不需要设置了,只需要在启动的时候把相应的变量和ip添加上去即可。

如果想增加多个,可以使用多个--add-host=即可,看下面的例子:

[root@www.wulaoer.org ~]# docker run -it --add-host=wulaoer:8.8.8.8  --add-host=wulaoers:8.8.8.2  --rm centos /bin/bash
[root@58597508fd92 /]# 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
8.8.8.8 wulaoer
8.8.8.2 wulaoers
172.17.0.2      58597508fd92

这样两个变量的ip已经指定好了,不过在生产中不建议这样使用,建议使用docker-compose,在docker-compose中我们可以根据extra_hosts下添加相应的即可。看下面的例子

extra_hosts:
 - "somehost:8.8.8.1"
 - "otherhost:8.8.8.2"

这是部分docker-compose的内容,如果多个可以一直添加即可,添加后在容器中的hosts内容格式如下:

8.8.8.1  somehost
8.8.8.2   otherhost

docker-compose能够解决所有应用的本地解析,--add-host=只能解决当前的一个容器,所以实验可以使用--add-host=,在生产环境中不建议使用。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: