docker单节点网络模式
程序员文章站
2022-03-05 15:28:36
...
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
上一篇: windows7笔记本蓝牙在哪里