1. Docker网络模式
[root@ovkgwkuxcpcmdmmq home]# docker network ls
NETWORK ID NAME DRIVER SCOPE
db175e3c4142 bridge bridge local
62159dee6bf4 home_ruoyi_net bridge local
6f95ebee447d host host local
5d01fb2b95de none null local
- host模式:使用 --net=host 指定。
- none模式:使用 --net=none 指定。
- container模式:使用 --net=container:NAME 指定。
- bridge模式:使用--net=bridge指定,默认设置,可省略。
1.1. Host模式
Host 模式为容器实例直接使用 Host 网络能力,与 Host 共享网卡、路由、转发表等,不创建 netns,不进行隔离,如容器实例绑定了 80 端口,则可以通过访问 Host 的 80 端口访问到容器实例,这种模式当前只支持 Linux,不支持 MAC、windows 系统,容器实例中运行ip a如下
1.2. Bridge 模式
bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。
1.3. container模式
这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信
1.4. none模式
使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
2. 创建网络
[root@haha ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
ed1c176a06d49da31969e229138ef5988a5fd9d2b2f2d2fc5ec1078be99a3d39
[root@haha ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
aa8a26ae1484 bridge bridge local
62cd016ed66a host host local
ed1c176a06d4 mynet bridge local
fc650e2a675e none null local
3. 删除网络
#当使用自定义网络创建的容器处于运行状态时,无法删除自定义网络。
#需要先将容器停止,之后再删除网络
docker stop fd27cabb6819
#删除自定义网络mynetwork
docker network rm mynetwork