zoukankan      html  css  js  c++  java
  • 容器互联

    docker0问题:不支持容器名互相连接访问!

    查看所有的docker网络

    docker network ls
    

    网络模式

    bridge:桥接docker默认,自定义的网络也使用bridge模式。

    none:不配置网络。

    host:和宿主机共享网络。

    container:容器内网络连通!用的少!局限很大!

    docker network帮助信息

    [root@localhost ~]# docker network --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
    

    测试自定义网络

    删除所有容器,保证干净环境。

    docker rm -f $(docker ps -a -q)
    


    回到最初的3个网卡

    之前直接启动的的命令

    docker run -d -P --name tomcat01 tomcat
    #直接启动的容器默认是docker0网络,其实默认省略了--net bridge参数
    

    docker0特点,默认域名不能访问,--link需要互相打通才能相互通信,不建议使用。

    自定义网络


    再查看docker network create --help帮助信息

    docker network create --help
    


    创建一个自定义网络

    --driver bridge #默认为桥接,可不写

    --subnet 192.168.0.0/16 #子网

    --gateway 192.168.0.1 #路由

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


    查看创建的网络

    docker network ls
    


    查看创建网络的详细信息

    docker network inspect nettest
    


    到此自己的网络就创建好了。

    容器走自定义网络

    测试启动2个容器

    docker run -d -P --name tomcat-net-01 --net nettest tomcat
    
    docker run -d -P --name tomcat-net-02 --net nettest tomcat
    


    再次查看自定义网络的详细信息

    docker network inspect nettest
    


    此时自定义网络下面就有了我们的容器信息。

    测试域名ping

    docker exec -it tomcat-net-01 ping 192.168.0.3
    
    docker exec -it tomcat-net-01 ping tomcat-net-02
    



    此时用容器的名称可以互相Ping通了。

    自定义的网络修复了docker0的缺陷。

    网络间通信

    网络联通,使2张网下的容器也可以互相通信。

    启动2个容器,不指定网络。测试2个网络下是否可以互通。

    docker run -d -P --name tomcat01 tomcat
    docker run -d -P --name tomcat02 tomcat
    
    #测试
    docker exec -it tomcat01 ping tomcat-net-01
    


    如何打通docker0和自定义的网络?

    网络之间如何互相打通?

    连接1个容器到1个网络

    docker network --help
    


    查看帮助信息

    docker network connect --help
    


    测试打通,查看详细信息

    docker network connect nettest tomcat01
    


    查看详细信息,连通后发生了什么?

    docker network inspect nettest
    


    连通之后就将tomcat01放到了nettest网络下?

    测试通信

    官方:1个容器2个IP

    方法:容器和网络打通解决2张网络下容器通信。

    测试tomcat02

    tomcat02与自定义网络nettest没有打通,所以无法ping通。

    结论:假设要跨网络通信,就需要使用docker network connect打通!

  • 相关阅读:
    弹性盒模型
    CSS3属性
    CSS3选择器
    闭包
    angularjs-select2的使用
    angular 分页插件的使用
    webstorm 破解
    数组和字符串之间的转化
    git 拉取分支代码 合分支
    时间戳转化为时间格式 时间格式转为时间戳
  • 原文地址:https://www.cnblogs.com/lwenwu/p/14047247.html
Copyright © 2011-2022 走看看