docker单节点网络模式

docker网络概况

在这里插入图片描述

四种单节点网络模式

1. bridge模式

docker容器默认使用bridge模式的网络
在这里插入图片描述

docker image ls
docker container run -itd --name peng_bridge --network bridge centos bash  //启动一个容器宿主机会增加一个veth
docker container exec -it peng_bridge bash //容器会增加一个eth0

  • 使用 veth 对,一头在容器的网络 namespace 中,一头在 docker0 上
  • 该模式下Docker Container不具有一个公有IP,因为宿主机的IP地址与veth pair的 IP地址不在同一个网段内
  • Docker采用 NAT 方式,将容器内部的服务监听的端口与宿主机的某一个端口port 进行“绑定”,使得宿主机以外的世界可以主动将网络报文发送至容器内部
  • 外界访问容器内的服务时,需要访问宿主机的 IP 以及宿主机的端口 port
  • 容器拥有独立、隔离的网络栈;让容器和宿主机以外的世界通过NAT建立通信
  • iptables 的 SNTA 规则,使得从容器离开去外界的网络包的源 IP 地址被转换为 Docker 主机的IP地址:
    在这里插入图片描述

2. host模式

在这里插入图片描述

docker container run -itd --name peng_host --network host centos bash
docker container exec -it peng_host bash
  • 这种模式下的容器没有隔离的 network namespace
  • 容器的 IP 地址同 Docker host 的 IP 地址
  • 需要注意容器中服务的端口号不能与 Docker host 上已经使用的端口号相冲突
  • host 模式能够和其它模式共存

3. container模式

在这里插入图片描述

docker container run -itd --name peng_container --network container:peng_bridge centos bash
docker container exec -it peng_container bash

在这里插入图片描述
在这里插入图片描述

  • 因为此时两个容器要共享一个 network namespace,因此需要注意端口冲突情况,否则第二个容器将无法被启动。
  • 从上图片可以看出共用了相同的ip地址

4. none模式

  • Docker Container的none网络模式意味着不给该容器创建任何网络环境,容器只能使用127.0.0.1的本机网络
docker container run -itd --name peng_none --network none centos bash
docker container exec -it peng_none bash

在这里插入图片描述

发布了112 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/studywinwin/article/details/104890801