使用Docker实现容器之间的互通

目录

怎样实现容器之间的相互通信?

情况1:两个容器在同一网段上

情况2:两个容器在不同网段上


怎样实现容器之间的相互通信?

情况1:两个容器在同一网段上

命令拓展:

删除所有容器:docker rm -f $(docker ps -aq)

查看所有的网络模式:docker network ls

清空控制台:clear

删除自定义网络:docker network rm mynetwork【公式:docker network rm 网络名称】

为了接下里的演示,我把原有的自定义网络mynetwork都删干净了。

  

①创建一个自定义网络

docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet

参数说明:
       --driver bridge  设置网络模式
       --subnet 192.168.0.1/16  设置子网
       --gateway 192.168.0.1 设置网关
       mynet  自定义网络的名称

②在刚才创建的mynet中创建两个容器

docker run -di --name c1 --net=mynet centos:7

docker run -di --name c2 --net=mynet centos:7

【-di不是守护进程方式所以不会进入容器,-it才是守护进程方式】

 创建成功!

③测试 ping

现在使用守护进程的方式启动容器,看看在c1中ping c2是否能够成功:

 

成功!反之,在c2中ping c1 也是可以成功的

则代表两个容器之间互通成功!

还有另外一种方法不进入容器也可以检测容器之间是否互通(前提是容器是启动)

启动容器后检查网络之间是否可以互通
docker exec -it c1 ping c2

 成功!

结论:

两个容器在同一网段上是可以互通的。


情况2:两个容器在不同网段上

 ①创建一个自定义网络(但不指定在刚才创建的mynet网络上)

docker run -di --name c3 centos:7

此时c1 ping c2 当然是成功的,因为 这两个容器是在同一网络上

现在来测试一下c1和c3进行ping,看看是否能成功

ping失败,互通失败,并且提示Name or servic not know,意思是找不到服务器或名字。

 这时候我们就需要把c3添加到mynet网络上来就可以了。

②将外界容器添加到项目容器中来

 docker network connect mynet c3

【公式:docker network connect 自定义网络名称 要添加的容器名】

这样c3 ping c1就成功啦!

比如说以后要是在公司,某位领导在不是同一网络下时需要使用他自己的电脑查看项目,那么我们就只需把他电脑服务器添加进来就好了。


本篇内容分享到此结束,我们下期再见!

猜你喜欢

转载自blog.csdn.net/m0_67094505/article/details/128294865