首页 > 服务器 > Docker 入门教程 > Docker 网络 - none 模式

Docker 网络 - none 模式

容器与主机、容器与容器之间是互相隔离的。同时,我们可以通过配置 docker 网络,为容器创建完全独立的网络命名空间,或者使容器共享主机或者其他容器的网络命名空间,以应对不同场景的需要。

这里有4 种常用的单宿主机网络模式:

  1. bridge 模式;
  2. host 模式;
  3. container 模式;
  4. none 模式。

本小节我们将了解网络模式中的 none 模式。

1. none 模式

容器有自己的网络命名空间,但不做任何配置,它与宿主机、与其他容器都不连通的。我们新建一个 none 模式的 busybox 镜像 b0:

docker run -d -t --network none --name b0 busybox

使用 docker exec b0 ip a 查看它的网络状态, 验证它仅有 lo 接口,不能与容器外通信:

图片描述

两个容器之间可以直连通信,但不通过主机网桥进行桥接。解决的办法是创建一对 peer 接口,分别放到两个容器中,配置成点到点链路类型即可。

⚠️ 以下操作需要在 Linux 下进行:

首先启动 2 个容器:

docker run -it -d --net=none --name=none1 busybox
docker run -it -d --net=none --name=none2 busybox

找到这两个容器的进程号:

docker inspect -f '{{.State.Pid}}' none1 #6545
docker inspect -f '{{.State.Pid}}' none2 #6606

然后创建网络命名空间的跟踪文件:

sudo mkdir -p /var/run/netns
sudo ln -s /proc/6545/ns/net /var/run/netns/6545
sudo ln -s /proc/6606/ns/net /var/run/netns/6606

创建一对 peer 接口,然后配置路由:

 sudo ip link add A type veth peer name B

 sudo ip link set A netns 6545
 sudo ip netns exec 6545 ip addr add 10.1.1.1/32 dev A
 sudo ip netns exec 6545 ip link set A up
 sudo ip netns exec 6545 ip route add 10.1.1.2/32 dev A

 sudo ip link set B netns 6606
 sudo ip netns exec 6606 ip addr add 10.1.1.2/32 dev B
 sudo ip netns exec 6606 ip link set B up
 sudo ip netns exec 6606 ip route add 10.1.1.1/32 dev B

现在这 2 个容器就可以相互 ping 通,并成功建立连接。点到点链路不需要子网和子网掩码:
图片描述

测试完毕删除无用的容器:

docker rm -f none1 none2

2. 小结

none 模式提供了一种空白的网络配置,方便用户排除其他干扰,用于自定义网络。

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈