Docker 提供了多种网络模式,用于控制容器之间以及容器与主机之间的网络通信。以下是 Docker 的一些常见网络模式
briage模式:
docker容器启动时默认就是该模式,在该模式下,docker容器会连接到一个名为docker0的虚拟以太网桥上,通过NAT(网络地址转发)实现与宿主机网络的通信。容器启动时,使用-p参数进行网络映射,映射过程参考:https://blog.csdn.net/Test_the_rookie/article/details/132407275?spm=1001.2014.3001.5501
host模式:
在该模式下,容器与宿主机共享网络。容器与宿主机使用相同的网络接口,容器可以直接绑定在宿主机的端口上,无须进行映射即可访问。注意!如果容器内部的程序需要对网络端口进行监听,那么在该模式下,容器内程序监听的网络端口不能与宿主机其他进程的端口冲突。
执行命令:docker run -d --network host image_name 即可使用host模式。进入host模式之后,无须映射,即可访问容器内部程序
使用命令:telnet host_ip:容器内部端口号,发现网络能够正常通信,出现下图即表示你可以直接访问该项目了,而不需要去做映射
none模式:
在此模式下,容器不会附加到任何网络上,容器只能使用本地回环接口,无法与其他主机或者同期通信。在该模式下,容器的网络控件将是一个完全封闭的状态。
执行命令:docker run -d --network none --name none_container mounting_image即可构建一个网络连接模式为none的容器。
执行命令:docker ps --format 'table {{.Names}}\t{{.ID}}\t{{.Image}}\t{{.Networks}}'即可自定义获取到容器的网络模式及各项状态
ps:–format ‘table …’ 是用于在 docker ps 命令中指定输出格式为表格形式的选项
下述两种网络模式仅做了解,具体实现未实操,仅介绍相关的概念。
overlay模式:
在该模式下,允许多个docker主机上的容器在一个逻辑网络中通信,该模式下容器具有了跨主机通信的能力。
macvlan模式:
在该模式下,容器能直接连接到物理网络,,并获得与物理主机上的网络接口类似的功能。在Macvlan模式下,每个容器都被分配一个独立的MAC地址,并且可以通过物理网络接口直接与其他设备通信。
学海无涯