Docker Network
Docker 默认提供三种网络类型:
- Bridge network
- None Network
- Host Network
Bridge network
当我们运行一个容器而不给它任何其它参数的时候,Bridge network将会是缺省网络类型。例如:
docker run ubuntu
以上命令默认创建了一个Bridge network
当网络被创建后,它会有一个默认ip,在这个例子中它是172.17.0.0。每当一个新的容器被创建,新的ip就会在这个子网内被创建,并分配给这个新的容器。
None Network
docker run -itd --network=none ubuntu
当我们用这个网络类型运行一个image时,创建的container不会被分配到任何网络,所以我们不能从主机与这个docker进行通信。
Host Network
docker run --network=host ubuntu
当我们给Host Network运行image的时候,创建的容器使用和主机相同的网络环境,这就意味着如果我们创建的容器占用了8080端口,那你就不能再创建另一个同样使用Host Network的容器去使用8080端口
让我们上机实践下
我们输入下列命令查看下网络类型的种类
docker network ls
输出应该是和下面的差不多:
NETWORK ID NAME DRIVER SCOPE
7c7b0621c2f7 bridge bridge local
9c8c2ecfc1eb host host local
efa92ce29ecc none null local
我们接下来检视下这些网络:
docker network inspect [NETWORK ID]
例:
docker network inspect 7c
我们可以在输出信息里找到该网络的子网信息:
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
还能告诉我们有哪些容器用到了该网络:
"Containers": {
"36bacba328578d0aed1eaca364985f7cb401eea53d08bfa5fee97bc9611f6d71": {
"Name": "hopeful_bohr",
"EndpointID": "dc4265a44e55e27d9130fa620f6e74bc870d907d4b87dc4fff2967ab7d1af2b1",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
我们可以再创建一个容器,并让它使用Bridge network
输入下列命令,让创建的容器连入Bridge network
docker run -itd ubuntu
再查看下新建的容器的id:
docker ps
我们再检视下新建的容器的配置: