1. 默认网络
当你安装好Docker时,会自动生成3种网络模式。
$ docker network lsNETWORK ID NAME DRIVER7fca4eb8c647 bridge bridge9f904ee27bf5 none nullcf03ee007fb4 host host
当然,docker不知提供了这种网络模式。你也可以用--network
来指定你需要的网络模式。 在启动docker时,使用docker run --network=<NETWORK>
选项来选择容器的网络模式,其中bridge
模式时默认模式。 其中none
模式就是一个只有127.0.0.1地址的容器,进入容器就可以看到
$ docker attach nonenetcontainerroot@0cb243cd1293:/# cat /etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allroutersroot@0cb243cd1293:/# ifconfiglo 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_nw1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b$ 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 lsNETWORK ID NAME DRIVER9f904ee27bf5 none nullcf03ee007fb4 host host7fca4eb8c647 bridge bridgec5ee82f76de3 isolated_nw bridge
当你创建了network后,可以用docker run --network=<NETWORK>
来启动容器。
$ docker run --network=isolated_nw -itd --name=container3 busybox8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c$ 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影像名。