欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker单节点网络模式

程序员文章站 2022-03-05 15:28:36
...

docker网络概况

docker单节点网络模式

四种单节点网络模式

1. bridge模式

docker容器默认使用bridge模式的网络
docker单节点网络模式

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地址:
    docker单节点网络模式

2. host模式

docker单节点网络模式

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单节点网络模式

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

docker单节点网络模式
docker单节点网络模式

  • 因为此时两个容器要共享一个 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

docker单节点网络模式

相关标签: docker