查了好多网站,“查看container现在工作在哪种网络模式”,居然找不到答案,很多人都在解答什么是四种网络模式,没人回答如何查看container工作在哪种模式的,不知道是不是这个问题用不着,唉。
方法一:
第一步,列出docker的所有模式:
docker network ls
可以看到:

NETWORK ID          NAME                DRIVER              SCOPE
8c799ea787e5        bridge              bridge              local
3fa60f66e6b3        host                host                local
aa4aac46baf7        none                null                local

第二步,针对bridge和host分别查找有哪些container在其中
docker network inspect bridge
docker network inspect host
找到其中的container段:

xxxx@n2800:~$ docker network inspect host
 "Containers": {
            "52651d40ef7b367ba785df2564971bc0d38360e0f40a6234f5c3c1cfdf6422c7": {
                "Name": "xware",
                "EndpointID": "548e72b0b08ce7fd8d9102495ebe17755060529baac18034f4ef34d0fbd7da94",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },

就可以看到哪个container在用这个host,或者bridge了。

方法二:
直接查看container的信息,找到network段查看。或者用grep筛选出network。
命令:
docker inspect 容器名/容器ID
docker inspect 容器名/容器ID | grep -i “network”
其中grep的“-i”表示不区分大小写。

xxxx@n2800:~$ docker inspect xware | grep -i "network"
        "NetworkMode": "host",

或者:

xxxx@n2800:~$ docker inspect xware

找到network段

            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "3fa60f66e6b365c8488e9380b1328a38c0c11746ebc6c8f8c0192f1ba29e8c36",
                    "EndpointID": "548e72b0b08ce7fd8d9102495ebe17755060529baac18034f4ef34d0fbd7da94",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }

很明显能看到,使用这个xware使用host网络模式。

如何进入container查看网络

在桥接模式下,可以进入container查看容器的网络信息
使用命令:
docker attach 容器名
比如两个alpine容器,alpine1和alpine2。桥接模式下,docker默认分配给容器的地址将是172.17.0.*,网关是172.17.0.1。
xxxx@n2800:~$docker attach alpine1
#
表示在alpine1已经取得root权限。
之后可以输入正常命令了,如:
#ip addr show
#ping -c 2 google.com
#ping -c 2 172.17.0.3
用ctrl加上pq来退出。按住ctrl然后按p和q。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐