zoukankan      html  css  js  c++  java
  • docker创建自定义网络,容器内部使用容器名相互ping通,配置不同网段互通

    用docker默认的网络 docker0 创建的容器,容器之间只能使用容器 ip 相互ping得通,使用容器名字ping不通。

    使用docker自定义的网络创建的容器,各容器之间既可以通过 ip 相互ping得通,也可以使用容器名相互ping得通。

    【1】创建自定义网络mynet

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

    参数说明:

    --driver bridge #表示桥接模式
    --subnet 192.168.0.0/16 #16表示最多支持65535个ip,可以分配192.168.0.2到192.168.255.255,如果没有指定--subnet参数默认网段为172.17.0.0/16,默认网关为172.17.0.1;
    --subnet 192.168.0.0/24 #24表示最多支持254个ip,可以分配192.168..0.2到192.168.0.255
    --gateway #表示docker容器的网关
    mynet表示网络名

     

    查看自定义网络mynet的信息:

    【2】创建容器

    创建3个tomcat容器到默认网络(docker0)

    docker run -d -P --name tomcat01 tomcat
    docker run -d -P --name tomcat02 tomcat
    docker run -d -P --name tomcat03 tomcat

    创建3个tomcat容器到自定义网络(mynet)

    docker run -d -P --name my-tomcat01 --net mynet tomcat
    docker run -d -P --name my-tomcat02 --net mynet tomcat
    docker run -d -P --name my-tomcat03 --net mynet tomcat

     查看默认网络 docker0 的信息

    docker network inspect bridge

    查看自定义网络 myne 的信息:

    docker network inspect mynet

    3】测试ping容器名以及ip地址

    分别用my-demo01容器ping my-demo02容器的ip及容器名,看是否ping得通。

    docker exec -it my-demo01 ping 192.168.0.3
    docker exec -it my-demo01 ping my-demo02

     使用ping命令如果报下面的错误:

    OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "ping": executable file not found in $PATH: unknown

    这是因为容器只有基础命令,没有网络命令导致,就先进入容器并且安装网络工具:

    docker exec -it my-tomcat01 /bin/bash
    apt update && apt install -y iproute2 && apt install -y net-tools && apt install -y iputils-ping

    看图信息,说明my--tomcat01无论是ping  my-tomcat02的ip还是容器名都可以通。

    【4】将不同网段的容器互通

    首先,mynet 网络还未跟 tomcat01 容器连通,我们用mynet中的容器 my-tomcat01来ping一下docker0网络中的 tomcat01 容器试试:

    docker exec -it my-tomcat01 ping tomcat01

    会出现 ping: tomcat01: Name or service not known 错误。

     然后,将自定义网络 mynet 跟默认网络 docker0 中的某个容器(比如:tomcat01)连通。

    docker network connect mynet tomcat01

     查看一下mynet网格信息:

    docker network inspect mynet

    此时,tomcat01容器加入到mynet网络中来了。再来 ping 一下加进来的容器:

    docker exec -it my-tomcat01 ping tomcat01

    这次ping通了。

  • 相关阅读:
    SM2实现(利用openssl的evp)
    BouncyCastle的SM实践
    初步动态分析
    信安保障复习
    数据库实验3
    软件测试之测试用例设计题
    Spring SPI 机制总结
    Servlet与Netty横向对比
    被遮挡部分高亮
    (十一)Android环境变量设置
  • 原文地址:https://www.cnblogs.com/yyee/p/15708696.html
Copyright © 2011-2022 走看看