1. 默认网络
当你安装好Docker时,会自动生成3种网络模式。
$ docker network ls
NETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
当然,docker不知提供了这种网络模式。你也可以用--network来指定你需要的网络模式。 在启动docker时,使用docker run --network=<NETWORK>选项来选择容器的网络模式,其中bridge模式时默认模式。 其中none模式就是一个只有127.0.0.1地址的容器,进入容器就可以看到
$ docker attach nonenetcontainer
root@0cb243cd1293:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
root@0cb243cd1293:/# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@0cb243cd1293:/#
而host模式则是一个与宿主机配置相同的容器。 即与宿主机同IP,并会占用宿主机的端口。
2 bridge模式
桥接模式,也就是以宿主机为网关建立一个虚拟局域网。和以前的docker0非常类似,但是增加了一些新特性。
$ docker network create --driver bridge isolated_nw
1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b
$ docker network inspect isolated_nw
[
{
"Name": "isolated_nw",
"Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.21.0.0/16",
"Gateway": "172.21.0.1/16"
}
]
},
"Containers": {},
"Options": {},
"Labels": {}
}
]
$ docker network ls
NETWORK ID NAME DRIVER
9f904ee27bf5 none null
cf03ee007fb4 host host
7fca4eb8c647 bridge bridge
c5ee82f76de3 isolated_nw bridge
当你创建了network后,可以用docker run --network=<NETWORK>来启动容器。
$ docker run --network=isolated_nw -itd --name=container3 busybox
8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c
$ docker network inspect isolated_nw
[
{
"Name": "isolated_nw",
"Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{}
]
},
"Containers": {
"8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c": {
"EndpointID": "93b2db4a9b9a997beb912d28bcfc117f7b0eb924ff91d48cfa251d473e6a9b08",
"MacAddress": "02:42:ac:15:00:02",
"IPv4Address": "172.21.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
3.docker_gwbridge模式
docker_gwbridge模式是docker在两种不同环境下自动创建的模式。
- 当你创建或加入一个swarm集群时,docker会用docker_gwbridge与其他swarm节点通信。
- 当没有容器网络可以提供外部连接时,Docker使用docker_gwbridge模式与其他网段的容器通信,所以容器可以连接其他网段的容器或swarm节点。 因为目前不用该模式,不深入了解。
4.指定网络
创建一个名为selfnet的网桥,并指定网段172.18.0.0
docker network create --subnet=172.18.0.0/16 selfnet
在selfnet网段内选一个IP进行指定
docker run -d -p 2001:2001 --net selfnet --ip 172.18.0.10 group/image-name -s 0.0.0.0 -k 123456 -m aes-256-cfb
其中,--net selfnet为我们之前创建的网桥,172.18.0.10为指定的IP,group/image-name 为docker影像名。
本文详细介绍了Docker中默认的网络模式,包括none、host、bridge等,并通过实例展示了如何创建自定义网络以及如何将容器连接到特定网络。此外,还介绍了docker_gwbridge模式的应用场景。

1818

被折叠的 条评论
为什么被折叠?



