docker的网络模型

1.NAT

NAT模型是docker默认的网络模型,也就是bridge模型,然后通过宿主机上面docker0这个网络设备NAT出来我们的网络。
docker的网络模型_第1张图片
我们可以看下我宿主机上面是192开头的网络,然后docker0这个网络设备是172开头的,我们的容器也是172开头的,我们可以运行一个docker容器,进入里面看下。

docker run -it --rm alpine  /bin/sh

docker的网络模型_第2张图片
我们可以看到容器内部跟docker0这个网络设备是在一个网段上的。这个docker0网段是可以通过修改/etc/docker/daemon.json 这个文件修改的,添加内容 “bip”: “ip/netmask” 就可以,但是不能与宿主机一个网段。

2. None

None这个网络模型表示docker容器不使用网络,在启动容器的时候可以通过–net=none来指定。

 docker run -it --rm --net=none alpine  /bin/sh

docker的网络模型_第3张图片
我们就可以看到容器内只有回环网卡了。

3.Host

Host模式网络表示docker与宿主机使用同一个网络,使用的是宿主机的网络,我们可以在启动容器的时候使用–net=host指定使用host网络模式。

 docker run -it --rm --net=host alpine  /bin/sh

docker的网络模型_第4张图片

4.联合网络

联合网络就是我两个容器共享一个网络,比如我一个容器用另一个容器的网络,启动容器的时候可以使用–net=container:容器id 来与你这个容器id共用一个网络。
这里我们演示下:先run一个nginx容器,然后再run

  1. 启动nginx容器
  docker run -d --rm --name nginx_net 2622e6cca7eb 

在这里插入图片描述
进入容器中安装net-tools并查看容器的ip

docker exec -it 433c1887d69d /bin/bash

docker的网络模型_第5张图片
docker的网络模型_第6张图片
2.运行另一个容器使用上面我们起的nginx容器网络:

docker run -ti --rm --net=container:433c1887d69d debian /bin/bash

在容器内安装下net-tools,使用ifconfig查看,ip是与上面容器ip是一样的:
在这里插入图片描述
docker的网络模型_第7张图片
然后我们在安装个curl工具,请求一下localhost:
在这里插入图片描述
docker的网络模型_第8张图片
我们可以看到,我们正好获取到上面nginx容器的index.html页面了,也就说明他俩容器共享一个网络。

你可能感兴趣的:(docker,docker,网络模型,docker网络模型)