Docker容器间通信
Docker中容器间的通信方式有哪些?
1.通过容器ip访问
容器重启后,ip会发生变化。所以通过容器ip访问不是一个好的方案。
2.通过宿主机的ip:port访问
通过宿主机的ip:port访问,只能依靠监听暴露出的端口的进程来进行有限的通信。
3.通过link建立连接(官方不推荐使用)
4.通过Docker桥接网络实现容器间相互访问(推荐)
第1/2种方式比较简单,在此主要讲述下第3/4种方式。
通过link建立连接
通过link建立的连接只能是单向通信。
--name 指定容器名称
--link 指定连接容器名称
启动容器并指定name和link:
docker run -d --name database -it centos /bin/bash
docker run -d --name web --link database tomcat
docker exec -it 容器ID /bin/bash
ping 虚拟IP
ping database
进入终端中执行ping命令,发现web可以访问通database,但database访问不了web容器。
通过Docker桥接网络实现容器间相互访问
查看所有的Docker网络
docker network ls
创建Docker网络:
docker network create -d bridge my-bridge
启动web和database容器时指定网络:
docker run -d --name web --network my-bridge tomcat
docker run -d --name database --network my-bridge centos
进入终端ping测试:
docker exec -it 容器ID /bin/bash
ping web
ping database
可以发现接入到同一个Docker网络的容器,相互之间都可以直接访问。
每创建一个网桥,都会创建一个虚拟网卡(网关)。
Docker network相关命令:
C:\Users\whwtr>docker network -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker network COMMAND
Manage networks
Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
Run 'docker network COMMAND --help' for more information on a command.
C:\Users\whwtr>
(完)