Docker 主机网络和空网络

在docker的网络设置有,默认有三种类型的网络,分别是bridge、host和null,如下图所示:

         在启动容器时,如果不指定网络参数,则默认使用bridge网络,而另外两种类型的网络则使用的较少,而在本文中,我们将探讨这两种预定义且有些独特的网络类型,即docker主机网络和空网络。

主机网络

      有时,我们希望在主机的网络命名空间中运行容器。当我们需要在容器中运行某些用于分析或调试主机网络流量的软件时,这可能是必要的,但请记住,这些都是非常特殊的情况。在容器中运行业务软件时,没有充分的理由在主机网络上运行相应的容器。出于安全考虑,强烈建议不要在生产或类似生产的环境中运行任何连接到主机网络的此类容器

那么,如何在主机的网络命名空间内运行容器呢?只需将容器连接到主机网络即可:

docker container run --rm -it \
    --network host \
    alpine:latest /bin/sh

以上,通过使用—network host参数,可以使得容器的网络与宿主机一致!

      在容器中使用 ip 工具分析网络命名空间。你会发现,我们得到的图像与直接在主机上运行 ip 工具时完全相同。例如,以下图片是容器内显示eth0网络的输出情况:

ip addr show eth0

 以下是主机上的网络图:

    在这里,我可以看到 192.168.9.40 是主机分配的 IP 地址,这里显示的 MAC 地址也与主机的 MAC 地址一致。说明,容器使用了与主机一致的网络,两个网络是相同的。

     再次指出,由于潜在的安全漏洞和冲突,在主机网络上运行容器可能很危险。因此,在运行 Docker 容器时,一般建议使用用户自定义的网络而不是主机网络,因为这样可以提供更好的隔离性,降低冲突和安全漏洞的风险。关于如何使用自定义的网络,可参考我的课程:Docker 实战_在线视频教程-CSDN程序员研修院

 docker空网络

     有时,我们需要运行一些完全不需要任何网络连接就能执行手头任务的应用服务或作业。强烈建议您在一个连接到无网络的容器中运行这些应用程序。该容器将完全隔离,因此不会受到任何外部访问。让我们运行这样一个容器:

docker container run --rm -it \
    --network none \
    alpine:latest /bin/sh

如上命令,通过指定--network none便可以将容器设置为无网络的

进入容器后,我们可以验证没有可用的 eth0 网络端点:

此外,也没有可用的路由信息,我们可以使用以下命令来证明这一点:

ip route

 返回为空

以上便是对docker中两种特殊的网络的讲解,希望对您有所帮助。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面朝大海,春不暖,花不开

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值