Docker网络

本文介绍了Docker的四种网络模式:Bridge(桥接)、Host、None和Container,以及如何实现自定义网络模式。Bridge模式下,Docker创建docker0网桥实现容器间隔离和互通;Host模式下,容器与主机共享网络空间,安全性较低;None模式下,容器完全隔离,无网络访问;Container模式则允许容器间共享网络。此外,还讨论了如何通过自定义网络实现跨容器通信,并提供了创建和连接网络的命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

Docker网络是docker对容器网络隔离的一项技术,提供了多种不同的模式,选择不同的网络模式来实现对容器的隔离和互通。主要实现以下功能:

  • 容器间网络隔离
  • 实现部分容器间网络共享
  • 管理多个子网下容器的ip

网络模式

Bridge(桥接)模式

默认在主机中创建一个docker0的网桥,专门实现容器内与主机互通的,在docker0创建一对虚拟网卡,有一半在主机上vethxxx,还有一半在容器内eth0。如下图所示。请添加图片描述

Host模式

容器不再有自己的网络空间,而是直接与主机共享网络空间,基于该模式创建的容器对应的ip实际就是与主机同一个子网和网段。缺点是容器的安全性较低。请添加图片描述

None模式

Docker会拥有自己的网络空间,不与主机共享,在这个网络模式下的容器不会被分配网卡、ip、路由信息。
特点:完全隔离,与外部任何机器都无网络访问,只有自己的lo,本地网络127.0.0.1请添加图片描述

Container模式

与Host模式不同,Container模式是容器间互相共享网络,而不是与主机共享。共享其中一个容器的ip、端口。请添加图片描述

自定义网络模式

不使用docker自带的网络模式,而是自己去定制化网络模式。通过以下命令来自定义:

docker network COMMAND

请添加图片描述
创建一个名为wolfcode的子网

docker network create --driver bridge --subnet 172.25.202.0/24 --gateway 172.25.202.1 wolfcode

现在想要基于wolfcode去创建容器,使用以下命令:

docker run --rm -d -P --name nginx_network1 --net wolfcode centos ping 127.0.0.1
docker run --rm -d -P --name nginx_network2 --net wolfcode centos ping 127.0.0.1

进入该容器查看ip
请添加图片描述
发现该容器已在该子网中。用nginx_network1去ping nginx_network2,发现可以ping通。请添加图片描述

桥接模式的容器互联

创建name=docker_net1的主机

docker run --rm -d --name docker_net1 -P centos ping 127.0.0.1

然后创建name=docker_net2的主机,使用--link的参数将它与net1的主机连接起来

docker run --rm -d -P --name docker_net2 --link docker_net1 centos ping 127.0.0.1

这样在用net2主机去ping net1时,发现可以ping通,但是net1无法ping通net2
请添加图片描述

跨容器网络通信

当一个容器桥接,另一个容器在wolfcode网络中时,这两个容器是无法进行网络通信的,需要用以下命令

docker network connect wolfcode docker_net1

请添加图片描述
原理是在执行上述命令后,容器1中又加入了另一个网卡eth1,该网卡和wolfcode关联,这样就能实现互联。
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lum1n0us

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值