docker link
启动容器test1
docker run --name test1 -d busybox /bin/sh -c "while true; do sleep 3600; done"
启动容器test2并link到test1
docker run --name test2 --link test1 -d busybox /bin/sh -c "while true; do sleep 3600; done"
docker 会查找test1这个容器,获得它的ip地址,然后将ip写入到test2容器中/etc/hosts中
查看/etc/hosts
docker exec test2 cat /etc/hosts
通过link,在test2容器中就可以ping test2, 但在test1中没有test2的ip地址,所以通过link只能在test2容器中添加test1的ip. 但是在test1中仍可以通过ip地址访问test2.
在test2中:
ping test1 – ok
ping 172.17.0.2 – ok
在test1中:
ping test2 – ping: bad address ‘test2’
ping 172.17.0.3 – ok
env
link参数还会在test2中添加如下的环境变量:
目标容器重启(test1)
除此之外当目标容器重启,docker会负责更新/etc/hosts文件,因此可以不用担心容器重启后IP地址发生了改变,解析无法生效的问题。