网络简介

Docker网络的实现主要是依赖Linux网络有关的技术,这些技术有网络命名空间(Network Namespace)、Veth设备对、网桥、ipatables和路由。

  • 网络命名空间,实现网络隔离

  • Veth设备对,实现不同网络命名空间之间的通信

  • 网桥,实现不同网络之间通信

  • ipatables,实现对数据包进行过滤和转发

  • 路由,决定数据包到底发送到哪里

网络模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~]# docker network --help

Usage: docker network COMMAND

Manage networks

Commands:
connect Connect a container to a network
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
安装完docker,就默认创建了三个网络
1
2
3
4
5
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
04f2eb0d05b9 bridge bridge local
9697f77248e1 host host local
abc08bbf4c8b none null local

运行容器时,你可以使用–net志来指定容器应连接到哪些网络

host模式:使用--net=host指定

容器和宿主机共用一个Network Namespace,容器将使用宿主机的网络。

none模式:使用--net=none指定

就是没有网络。

container模式:使用--net=container:容器名称或者ID指定

当前容器和指定容器共用一个Network Namespace,当前容器将使用指定容器的网络。

bridge模式:使用--net=bridge指定,默认设置

bridge模式,桥接模式,默认的模式