上一篇:Docker的那些事儿—自定义bridge网络和默认bridge网络比较(25)
前面在学习bridge网络和自定义网络时,我们了解了同一网络中容器间可以相互通信。不同网络间容器是相互隔离。那么容器间的通信方式有哪些?
通过IP地址方式通信
容器间IP方式通信是最简单的,但是由于容器的IP并不是固定不变的。比如容器stop后,又重新start起来后,IP可能发生变化(容器stop后,ip会被释放,可能被其他容器使用了),所以通过IP进行通信就显得不太灵活了。
通过容器名方式通信
Docker从1.10版本内嵌了一个DNS服务,使得容器间可以直接通过容器名通信。需要注意的是该通信方式仅适用于自定义的网络。
上述两种方式,前面我们已经演示过。
通过container模式的方式通信
这要求容器启动时指定使用已经存在的容器的网络:--network=container:NAMEor ID
docker run -itd --name mysql5 --network=container:mysql1 mysql /bin/bash
container模式启动容器方式后,容器mysql5共享mysql1的network namespace。我们看到docker exec mysql5进入的是容器mysql1内部。
此时的网络拓扑如下:
container模式存在如下特点:
1、两个容器间通过127.0.0.1可以实现高效快速通信。
2、可能存在端口冲突情况。
下一篇:Docker的那些事儿—容器与外部网络的连通(27)
网友评论