docker容器间的相互通信
一、根据对外暴漏的端口通信 二、每个容器都会被docker分配一个ip,一般是172开头的,直接根据ip通 信,但是这个ip每次都会变,实用性不强。 三、使用–link参数,–link就是在hosts里面添加映射(官方不推荐使用) 第一步先启动访问目标容器 docker run -it -d -p 9081:80 –name nginx1 nginx 第二步启动客户端容器,并使用–link指定目标服务器的访问别名(第一个是容器的名称/ID,第二个是访问别 名) docker run -it -d -p 9091:80 –link nginx1:qyg –name nginx2 nginx docker exec -it nginx2 /bin/bash root@d323c08453f0:/# cat /etc/hosts 127.0.0.1localhost ::1localhost ip6-localhost ip6-loopback fe00::0ip6-localnet ff00::0ip6-mcastprefix ff02::1ip6-allnodes ff02::2ip6-allrouters 172.17.0.3qyg 274ba29d1624 nginx1 172.17.0.4d323c08453f0 四、自定义bridge网桥 首先在主机上创建一个网络,命令如下: docker network create mynet docker network create \ –driver bridge \ – subnet=172.25.0.0/16 \ –gateway=172.25.0.1 \ –ip-range=172.25.50.0/24 \ –aux- address=“my-router=172.25.50.10”\ my-custom-network // 已启动的连接如网络 docker network connect –alias db wisemapping-network mysql // 检查王国有哪些镜像
docker network inspect mynet 在主机用ifconfig查看网络情况,对应的网卡地址如下: br-49d34a6504d1 Link encap:以太网硬件地址 02:42:bc:ba:62:17 inet 地址:172.18.0.1 广播:0.0.0.0 掩码:255.255.0.0 inet6 地址: fe80::42:bcff:feba:6217/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:1400 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:1558 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:79757 (79.7 KB) 发送字节:3650465 (3.6 MB) 注:可以创建多个网络,每个网络IP范围均不相同。 然后,运行ubuntu镜像: docker run -it –rm –network mynet –network-alias ubuntu1 ubuntu bash 其中,–network mynet表示使用mynet网络,–network-alias ubuntu1表示 该容器运行时,使用的网络别名为ubuntu1。(网络别名的作用类似 hostname,不管容器IP如何变化,都可以使用同一个别名。) 接着,在同一台电脑启动另一个终端,启动ubuntu镜像: docker run -it –rm –network mynet –network-alias ubuntu2 ubuntu bash 推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip 是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多 个,隔离在不同的网段。