zoukankan      html  css  js  c++  java
  • docker容器之间进行网络通信

    原文参考如下

    Docker网络模式 https://www.cnblogs.com/zuxing/articles/8780661.html

    Docker Network基础 https://www.cnblogs.com/jsonhc/p/7823286.html

     

    一、默认网络

    安装Docker时,它会自动创建三个网络。你可以使用以下docker network ls命令列出这些网络

    docker network ls

    内容如下:

     docker 运行新建容器的时候,默认使用 bridge 模式,

    如果想更改,可以在 run 的时候,加上参数 --network <name>

     

    二、Bridge模式

    当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。这个和Vmware的桥接模式是一样的。但是docker默认禁止了容器之间的相互通信,所以,默认情况下(容器不指定 network 的情况下),容器和容器之间,网络是不通的。可以通过 配置--icc=true 来开启容器间的通信。但这意味着宿主机上的所有容器可以不受任何限制地相互通信,这可能导致拒绝服务攻击,所以不推荐

    三、自定义网络实现容器间通信

    创建网络

    创建一个网络名为 my_net 且 driver 为 bridge 的网络:(默认创建的就是bridge)

    docker network create my_net

    然后执行 docker network ls 查看网络

     

    运行容器的时候,指定 network

    例:运行一个 mysql 容器:

    docker run -d --name mysql -p 3306:3306 --network my_net --network-alias mysql mysql:5.7.30

    说明:

      --network my_net:指定容器的网络

      --network-alias mysql:指定其它容器访问该容器时的网络别名

     

    接下来,运行另一个容器:

    docker run -d --name eureka-server -p 8761:8761 --network my_net --network-alias eureka-server eureka-server:1.0.0

    然后我们在 eureka-server 容器中去测试,是否能 ping 通刚才的 mysql 容器,执行:

    docker exec -it eureka-server ping mysql

    结果如下:

     由此可见,容器之间已经能进行互相访问了

    四、通过 --link 实现容器间的通信

    容器之间还可以通过 --link 的方式来实现通信,不过这种方式在多个容器之间需要进行通信时,不免显得笨重,所以不推荐使用。

  • 相关阅读:
    SQL中使用WITH AS提高性能
    电子邮件原理
    DirectoryEntry 活动目录的使用
    Entity Framework 教程(转)
    用sp_addlinkedserver建立链接服务器(sql server2008中通过测试)
    SQL2008和SQL2000可以跨服务器连接查询的测试实例
    Linq快速入门——扩展方法
    easyui 很好很强大
    【转】Jmeter内存溢出处理方式记录
    【转】Jmeter安装成功后的目录介绍
  • 原文地址:https://www.cnblogs.com/lkc9/p/13740677.html
Copyright © 2011-2022 走看看