docker自定义网络

本文介绍了Docker的网络类型,如none、host、bridge、overlay和macvlan,并重点讲解了如何创建和管理自定义的bridge网络。通过示例展示了如何指定IP网段,以及容器间的通信。此外,还提到了Docker的默认网络结构和内嵌DNS服务器如何支持容器间的名称通信。

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

Docker会自动创建none、host、bridge三种网络,也可以根据需要自定义网络,包括bridge、overlay、macvlan,其中overlay和macvlan是跨主机的网络。

docker network常用子命令如下:

docker network create
docker network connect
docker network ls
docker network rm
docker network disconnect
docker network inspect

默认的网络如下

这里写图片描述

网络结构

这里写图片描述

创建bridge网络,指定ip网段(也可以自动分配)

docker network create --driver bridge --subnet 172.14.14.0/24 --gateway 172.14.14.1 net1

这里写图片描述

执行ifconfig命令后也可以看到br-c201be4aa4a6

这里写图片描述


容器分配添加的bridge网络

docker run -d --name httpd1 --network=net1 --ip 172.14.14.12 -p 8081:80 dbfc2cbe2971

curl 172.14.14.12可以正常访问
再看网络结构,会发现新的网络接口挂到了net1上,vethaef4a02是该容器的虚拟网卡

这里写图片描述

进入该容器后可以查看到该网卡跟上面的虚拟网卡不一样。两者是一对veth pair,可以比喻成一根虚拟网线把一对网卡连接起来,一边是容器,一边是net1,就相当于把容器的网卡也添加到了net1。


再创建一个容器2

docker run -d --name httpd2 --network=net1 -p 8082:80 dbfc2cbe2971

这里写图片描述

进入该容器,ping下httpd1的ip

这里写图片描述

在同一网络下,容器之间、容器和网关之间可以正常通信。


建立容器3,默认网关docker0

docker run -d --name httpd3 -p 8083:80 dbfc2cbe2971

这里写图片描述

然后ping容器1的ip结果显示失败,说明两个网络之间是独立的。
如果要让容器3ping通容器1的ip,则需要把容器3添加到容器1所在的网络下

docker network connect net1 httpd3

这里写图片描述

ifconfig查看,httpd3增加了eth1

这里写图片描述

然后再次ping即可成功

这里写图片描述


另外,直接ping容器名也可以ping通。(内嵌的DNS server)只能在自定义网络中使用容器名之间通信,默认的docker0是不可以通过容器名来通信的(不能用dns)。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值