查了好多网站,“查看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查看容器的网络信息
使用命令:
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。