美文网首页
docker 网络之host,none

docker 网络之host,none

作者: 云师兄 | 来源:发表于2018-05-23 23:23 被阅读16次

    执行docker network ls可以看到当前docker环境中有三种网络:

    [vagrant@localhost ~]$ docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    dce12ad15e67        bridge              bridge              local
    be63d9693f78        host                host                local
    ec80468730b6        my-bridge           bridge              local
    d1c04eee03c8        none                null                local
    

    第一个是bridge0,这个我们在之前的文章中已经提过了,下面我们将在host和none这两个网络展开讨论。

    none network

    首先我们运行一个busybox容器,它连接到了none网络。

    docker run -d --name test --network none hub.c.163.com/library/busybox:latest /bin/sh -c "while true;do sleep 3600;done"
    

    运行后,我们查看这个容器内部的网络信息:

    [vagrant@localhost ~]$ docker exec -it 17b4541a0389 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    

    发现这个网络只有lo端口,没有之前说的veth端口,另外我们查询docker环境中none这个网络信息:

    docker network inspect d1c04eee03c8
    

    结果如下:

    "Containers": {
                "17b4541a0389a77af67e34a3471c7f594a3d28fe9850b79b45457310e6f99b16": {
                    "Name": "test",
                    "EndpointID": "739328fb2e656e967066205c25ca3a5b96db2500478a4b2d16b7296a1a16ded0",
                    "MacAddress": "",
                    "IPv4Address": "",
                    "IPv6Address": ""
                }
            },
    

    可以看到连接到这个网络的容器的ip地址为空,这就是none网络和bridge网络的差别,连接到了none网络的容器,就不能通过网络与外界通信,所以它的应用场景只能是容器不想被网络连接的情况。

    host network

    我们先将上面启动的容器关掉删除后,重新运行一个连接到host网络的容器:

    docker run -d --name test --network host hub.c.163.com/library/busybox:latest /bin/sh -c "while true;do sleep 3600;done"
    

    然后查看host网络的连接信息:
    docker network inspect host
    结果如下:

     "Containers": {
                "41db4524fa271053733f2d65dd8fec8f72a2f040b85e1b840daf351f2d66e408": {
                    "Name": "nginx-test",
                    "EndpointID": "4da3ab311a5d698c45b775654e0e23d246876971ef40ab27b016a4f9c0edafd7",
                    "MacAddress": "",
                    "IPv4Address": "",
                    "IPv6Address": ""
                }
            },
    

    发现连接的容器的ip地址也是为空。但是我们进入容器查看:

    [vagrant@localhost ~]$ docker exec -it 41db4524fa27 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
        link/ether 52:54:00:5f:94:78 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
           valid_lft 60259sec preferred_lft 60259sec
        inet6 fe80::5054:ff:fe5f:9478/64 scope link
           valid_lft forever preferred_lft forever
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
        link/ether 02:42:08:96:2b:f9 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:8ff:fe96:2bf9/64 scope link
           valid_lft forever preferred_lft forever
    64: br-ec80468730b6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
        link/ether 02:42:01:53:f2:be brd ff:ff:ff:ff:ff:ff
        inet 172.18.0.1/16 brd 172.18.255.255 scope global br-ec80468730b6
           valid_lft forever preferred_lft forever
        inet6 fe80::42:1ff:fe53:f2be/64 scope link
           valid_lft forever preferred_lft forever
    

    发现容器内部的网络信息和docker宿主机的网络信息相同,这是因为连接到了host网络的容器创建的时候没有创建自己的network namespace,而是共享了宿主机的network namespace。
    这个host网络一般有什么用途呢?暂时不知道,以后知道再补充吧。

    相关文章

      网友评论

          本文标题:docker 网络之host,none

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