微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker的网络模型

1.NAT

NAT模型是docker认的网络模型,也就是bridge模型,然后通过宿主机上面docker0这个网络设备NAT出来我们的网络。

在这里插入图片描述


我们可以看下我宿主机上面是192开头的网络,然后docker0这个网络设备是172开头的,我们的容器也是172开头的,我们可以运行一个docker容器,进入里面看下。

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

在这里插入图片描述


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

2. None

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

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

在这里插入图片描述


我们就可以看到容器内只有回环网卡了。

3.Host

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

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

在这里插入图片描述

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

在这里插入图片描述


在这里插入图片描述


2.运行另一个容器使用上面我们起的Nginx容器网络:

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

在容器内安装下net-tools,使用ifconfig查看,ip是与上面容器ip是一样的:

在这里插入图片描述


在这里插入图片描述


然后我们在安装个curl工具,请求一下localhost:

在这里插入图片描述


在这里插入图片描述


我们可以看到,我们正好获取到上面Nginx容器的index.html页面了,也就说明他俩容器共享一个网络。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐