关于docker run --link到底有什么作用?


如题,关于docker run --link 说是容器互联。
比如:name:web/db表示 web 容器链接到 db 容器,web 容器将被允许访问 db 容器的信息。(dockerpool上面的一句话)
这句话嘛意思??难道都是内网机器,不linkweb容器就不能访问db容器了吗?
都是内网机器,网络也是互通的,我进这个db容器就能看到他的IP端口,我就可以从兄弟容器来访问它。这个link有嘛用?
已邀请:

bluesky - 隐于市的运维工程师

赞同来自: 朱博睿 kelvinblood


link 是在两个contain之间建立一种父子关系,父container中的web,可以得到子container db上的信息。
通过link的方式创建容器,我们可以使用被Link容器的别名进行访问,而不是通过IP,解除了对IP的依赖。
不过,link的方式只能解决单机容器间的互联,多机的情况下,需要通过别的方式进行连接。
--link=container_name or id:name 使用这个选项在你运行一个容器时,可以在此容器的/etc/hosts文件中增加一个额外的name主机名,这个名字为container_name的容器的IP地址的别名。这使得新容器的内部进程可以访问主机名为name的容器而不用知道它的Ip。
内网是走docker0的网桥,互相之间是Ping的通的,但是docker run 建立容器的时候,它的Ip地址是不可控制的,所以docker 用link的方式使web能够访问到db中的数据。

Secends

赞同来自: 朱博睿


如楼上所说,link基本就是提供了方便而已。 如果你愿意手动的找一找ip,添加个hosts记录,这个link我也觉得并非不可或缺。

要回复问题请先登录注册