docker--网络和特权模式

前戏

查看网络模式:

docker network ls

默认的三种网络模式:

  • bridge:桥接模式
  • host:主机模式
  • none:无网络模式

bridge桥接模式

桥接模式是docker 的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥

当我们启动一个容器时,会桥接到docker0网卡上,在通过Nat技术就实现了外网访问docker容

docker0 是启动docker服务时分配的网桥,77和83是启动一个容器时分配的网桥(bridge模式时才会有)

host模式

host 模式:该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口

host模式是使用的宿主机的ip和端口,不会生成一个网卡桥接到docker0模式。

拉取nginx镜像

docker pull nginx

启动nginx容器,--net=host 指明网络模式为host,如果不指明,默认为bridge

docker run -d --net=host nginx

防火墙放开80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

启动容器时没有指定端口号,我们直接访问宿主机的80端口是可以访问到nginx的

host的缺点就是只能启动一个相同的服务,比如nginx镜像的端口都是80,你在宿主机上启动一个就占用了宿主机的80端口,在启动一个nginx就会报错

none模式

none模式:关闭模式

无法连外网

比较少用,了解有这种网络模式即可

特权模式

也比较少用,了解即可

启动一个普通的容器

docker run -itd --name mycentos centos:7 /bin/bash

安装网络工具:

yum -y install net-tools

执行route -n 查看网关

删除网关

route del default gw 172.17.0.1

这样会提示权限

启动拥有特权模式的容器:只需要在启动容器的时候加上--privileged=true就可以了

docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash

猜你喜欢

转载自www.cnblogs.com/zouzou-busy/p/11852986.html
今日推荐