当前位置: 代码迷 >> 综合 >> 企业版Docker11——Docker的三种原生网络(bridge,host,none)——没有域名解析
  详细解决方案

企业版Docker11——Docker的三种原生网络(bridge,host,none)——没有域名解析

热度:67   发布时间:2023-12-23 02:16:49.0

docker的原生网络:bridge,none,host
docker自带的网络模式有bridge,none,host,container4种,它是删除不了的
docker network ls #查看docker网络

1. bridge模式docker的默认模式,docker进程第一次启动会创建一个docker0虚拟网桥,此宿主机上启动的容器会默认连接到这个网桥上,容器通过这块网桥NAT访问外部网络,当执行docker run加入-p参数是,实际是iptables中加入了对应的DNAT端口转发规则。2. host模式host模式的容器和宿主机共用一个namespace,拥有一样的IP和路由,因此容器内的服务端口不能根宿主机相同3. none模式none模式创建的容器没有网卡,需要自行配置4. container模式container模式创建一个跟指定容器共用的新容器

一、搭建实验环境

实验环境rhel7.3

## 外部访问容器 (host模式)
直接从docker0访问#外部主机访问容器 (bridge模式)
外部主机-->宿主机(eth0)(172.25.10.1:80)-->DNAT-> 172.17.0.2:80(容器地址)

为了保证实验效果明显,重新创建一个干净的实验环境
#1 真机远程连接server4虚拟机
在这里插入图片描述#2 在真机上面搭建共享yum源,含有docker的安装源,开启apache服务,关闭防火墙
在这里插入图片描述
在这里插入图片描述#3 在server1上编写yum源的配置文件来共享真机的yum源
在这里插入图片描述在这里插入图片描述
#4 给server4安装docker
在这里插入图片描述
#5 开启并且设置开机启动docker服务
在这里插入图片描述
#6 在真机上给server4发送nginx和ubuntu的镜像,第一个nginx.tar过大,用第二个传给虚拟机进行覆盖
在这里插入图片描述
#7 导入镜像并且查看
在这里插入图片描述

二、开始演示docker的三种原生网络

在这里插入图片描述
查看三种原生网络
在这里插入图片描述
在这里插入图片描述
可以看到容器的宿主机server4上面多了一个网桥接口,这个桥接接口供容器和外界通信
类似于物理机和虚拟机的关系,虚拟机要上网就得通过物理机才可以
在这里插入图片描述在这里插入图片描述

#1 bridge模式

可以看到目前没有容器正在运行
在这里插入图片描述
宿主机的桥接接口上面也没有容器
在这里插入图片描述
运行一个容器
在这里插入图片描述
在这里插入图片描述
容器都桥接docker0(出口网卡相当于一个网关),连接到网卡eth0上,然后进行地址伪装,路由转换,进行与外部通信
在这里插入图片描述
可以看到这个容器的ip与桥接接口在一个网段,并且ip地址以网桥ip为基础递增,以网桥ip为网关
在这里插入图片描述
在这里插入图片描述
关闭刚才运行的容器,发现桥接就没有了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关闭容器的时候宿主机就不能ping通容器
开启容器的时候宿主机就能ping通容器,并且ip也就有了
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
以上就是基本bridge模式,一般开启的容器模式使用的也是这种网络模式
注意:bridge模式只有宿主机才能与运行在其上面的容器进行通信

切忌三点就可理解bridge模式:
宿主机上有桥接接口,上面有ip
开启的容器会自动分配和ip在一个网段的ip 地址,并且开启的容器的ip以ip为基础递增
关闭容器之后,ip会自动释放;

清理一下实验环境,准备看第二种网络模式
在这里插入图片描述

#2 host模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以host模式运行一个容器vm1
在这里插入图片描述
可以看到容器vm1的网络与宿主机一模一样
在这里插入图片描述
但是可以看到宿主机和容器的运行环境是不一样的,这就是容器共享宿主机的网络
在这里插入图片描述
在这里插入图片描述
当exit直接完全退出容器vm1时,可以重启启动vm1容器,再次连接进入,但是ctrl+p+q只是退出不关闭
在这里插入图片描述
清理一下实验环境,接下来host模式运行一个nginx容器
在这里插入图片描述在这里插入图片描述
在直接上可以访问到宿主机的ip,看到nginx服务的默认页面,其实访问的是容器
因为容器的ip与宿主机的ip是一模一样的
在这里插入图片描述
在这里插入图片描述
不是bridge模式,因此桥接没有
在这里插入图片描述
可以看到nginx服务开启的80端口在这里插入图片描述

#3 none模式

在这里插入图片描述
可以看到只有回环接口,宿主机禁止容器使用网络
对于那种比较机密的服务所在的容器可以使用这种网络模式
在这里插入图片描述
清理环境
在这里插入图片描述
接下来这个可以验证bridge模式的ip递增
在这里插入图片描述在这里插入图片描述
ping是可以ping通的,但是退出只是ctrl+p+q,而不是exit,完全退出就相当于关闭了容器
在这里插入图片描述
在这里插入图片描述
清理环境,实验结束
在这里插入图片描述

  相关解决方案