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页面了,也就说明他俩容器共享一个网络。

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...