Docker网络模式简讲

docker有四种网络模式:Bridge、Container、Host、None

docker默认的网络模式为Bridge,通过在镜像启动时使用–net进行指定,不特殊声明则为默认模式。

docker进程启动时会在宿主机上创建一个名为docker0的虚拟网桥,此主机上启动的所有的docker镜像容器都会链接到这个虚拟网桥上。(虚拟网桥就是为了将镜像容器的虚拟机网络与主机网络建立桥接的一个交换机,与交换机的工作方式类似::此处不再累赘,这都不懂就自刎了吧)

四大家族:Bridge、Container、Host、None

1、Bridge模式:默认、使用–net=bridge

bridge模式是将每个docker镜像容器隔离开运行,分别映射到宿主机的端口上,每个容器都会被分配一个独立的网络命名空间,并且会把网络命名空间的IP映射到宿主机的docker0上。

a.启动命令:

docker run --net=bridge --name xiaolu_one -dt xiaolu

b.原理图:

img

c.宿主服务器:

img

d. docker容器:

img

2、host模式:–net=host

host模式是与宿主机共用同一个网络空间,容器不会虚拟出自己的网卡、配置自己的IP等,也不会映射到docker0虚拟网桥,容器的IP、端口都与宿主机共用,极其容易发生冲突,所以不推荐使用此模式。虽然网络空间是与宿主机共用,但是文件系统、进程列表与宿主机是隔离的。

a.启动命令:

docker run --net=host --name xiaolu_two -dt xiaolu

b.原理图:

img

c. 宿主服务器:

img

d. docker容器:

img

Tip:可以看出宿主机和docker容器查看到的内容一样

3、Container模式:–net=container:docker_container_name

Container模式是将新创建的容器指定与一个已经存在的容器共用一个网络空间,新创建的容器不会创建自己的网卡、配置自己的IP,容器内的端口和IP都与指定容器使用同一个,但是新建容器的文件系统、进程列表是与宿主容器相隔离。

a.启动命令

1
2
3
docker run --name xiaolu_three -dt xiaolu

docker run --net=container:xiaolu_three --name xiaolu_four -dt xiaolu

b.原理图

img

c.宿主服务器:

img

d.Container容器:

img

e. docker容器:

img

Tip:可以看到docker容器看到的网络信息和Container容器的一样

4、None模式:–net=none

None模式表示docker容器拥有自己的网络空间,但是并不为docker容器进行任何网络配置,也就是说这个docker容器没有网卡、IP、路由等信息,需要手动为docker容器配置。

a.启动命令:

docker run --net=none --name xiaolu_five -dt xiaolu

b.原理图

img