1、link单向通信:
指定mysql一个固定的名称,各个应用服务通过该固定的mysql固定的名称访问,
即时mysql重启了容器重新分配了IP地址,仍能访问mysql。
举例:
启动mysql容器:
docker run --name mydb -e MYSQL_ROOT_PASSWORD=hdc@328216 -d hdc-mysql-5.7
--name mydb 一定要指定,后续启动其它容器指定--link需要使用到
启动centos容器:
docker run -itd --name mycentos1 centos:7
此时未指定--link mydb,在mycentos1容器内部是无法ping通mydb
docker run -itd --name mycentos1 --link mydb centos:7
此时指定--link mydb,在mycentos1容器内部可ping通mydb
docker exec -it mycentos1 /bin/bash
ping mydb
【注】:mydb这个容器一定要提前创建存在,此时再mysql容器内是无法ping通mycentos1容器的。
容器内安装命令工具:
apt-get update
apt-get install net-tools
2、bridge网桥双通信:
创建一个新的网桥: docker network create -d bridge my_bridge
启动第一个容器: docker run -itd --name tomcat centos:7
启动第二个容器: docker run -itd --name redis centos:7
把第一个容器加入网桥:docker network connect my_bridge tomcat
把第二个容器加入网桥:docker network connect my_bridge redis
查看网桥:
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
9466c6ace6fd bridge bridge local
8af92aabb9ce host host local
891d7a17c133 my_bridge bridge local
7daf584b1f6b none null local
进入任意一个容器内:
docker exec -it tomcat1 /bin/bash
[root@1284069b5107 /]# ping tomcat2
PING tomcat2 (172.18.0.3) 56(84) bytes of data.
64 bytes from tomcat2.my_bridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from tomcat2.my_bridge (172.18.0.3): icmp_seq=2 ttl=64 time=0.052 ms
结果:可ping通另一个容器,即实现了双向通信。
网友评论