美文网首页程序员
Docker学习笔记(5)——Network

Docker学习笔记(5)——Network

作者: 无知者云 | 来源:发表于2018-03-27 22:44 被阅读0次

    Docker有以下网络类型:

    • bridge:多由于独立container之间的通信
    • host: 直接使用宿主机的网络,端口也使用宿主机的
    • overlay:当有多个docker主机时,跨主机的container通信
    • macvlan:每个container都有一个虚拟的MAC地址
    • none: 禁用网络

    默认网络

    Docker在默认情况下,分别会建立一个bridge、一个host和一个none的网络:

    CNyteng:docker-volume yteng$ docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    557d70cd18ab        bridge              bridge              local
    27015fb1d01c        host                host                local
    d7bdd36df894        none                null                local
    

    可以看到,driver类型为bridge的网络的名字也为bridge。在默认情况下,container都是使用的这个bridge的网络,此时container是可以访问外网和其他container的(需要通过IP地址)。

    默认的名为bridge的网络是有很多限制的,为此,我们可以自行创建bridge类型的网络。默认的bridge网络与自建bridge网络有以下区别:

    • 端口不会自行发布,必须使用-p参数才能为外界访问,而使用自建的bridge网络时,container的端口可直接被相同网络下的其他container访问。

    • container之间的如果需要通过名字访问,需要--link参数,而如果使用自建的bridge网络,container之间可以通过名字互访。

    • 更多区别请参考这里

    查看网络详情

    docker network inspect bridge
    

    自建bridge网络

    当有多个独立的container之间需要彼此访问时,推荐使用自建bridge网络,而不是--link

    创建bridge网络
    docker network create --driver bridge my-network
    
    启动两个container,同时加入my-network:
    docker run -dit --name alpine1 --network my-network alpine
    docker run -dit --name alpine2 --network my-network alpine
    
    container之间互访
    CNyteng:~ yteng$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    f3ff8569849a        alpine              "/bin/sh"           48 seconds ago      Up 48 seconds                           alpine2
    50093c07f9d0        alpine              "/bin/sh"           2 minutes ago       Up 2 minutes                            alpine1
    
    docker exec -it alpine1 sh
    / # cat /etc/hosts
    172.18.0.2  50093c07f9d0 // 这是alpine1自己
    / # ping alpine2
    PING alpine2 (172.18.0.3): 56 data bytes
    64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.172 ms
    64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.154 ms
    64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.154 ms
    

    相关文章

      网友评论

        本文标题:Docker学习笔记(5)——Network

        本文链接:https://www.haomeiwen.com/subject/nvlecftx.html