docker设置容器ip

方法一 Macvlan

Macvlan是一种容器网络模式,它允许Docker容器直接连接到主机的物理网络接口。这使得容器能够直接获得一个IP地址,并且在网络_上可以像主机- -样运行。Macvlan 网络模式的优点是容器的网络性能非常好,而且可以实现容器与主机在同一局域网内相互通信。

在使用Macvlan网络模式时,需要指定一个父网卡 (parent interface),也就是一个物理网卡, 容器将使用该网卡进行通信。容器可以使用静态IP地址或从DHCP服务器获取IP地址。与其他网络模式相比,Macvlan 网络模式的缺点是较为复杂,配置也相对困难。
部署示例:

创建macvlan网络:

docker network create -d macvlan --subnet=192.168.88.0/24 --gateway=192.168.88.254 -o parent=eth0 macvlan-network

创建容器:

docker run -itd --name=XXXX --privileged=true --network=macvlan-network --ip=192.168.88.56 docker.images

进入容器确认ip:

docker exec - it XXXX /bin/bash -C ifconfig

方法二 IPvlan

与Macvlan类似,IPvlan 也是从一个主机接口虚拟出多个虚拟网络接口。区别在于IPvlan所有的虚拟接口都有相同的MAC地址,而IP地址却各不相同。因为所有的IPvlan虚拟接口共享MAC地址,所以特别需要注意DHCP使用的场景。DHCP 分配IP地址的时候一般会用MAC地址作为机器的标识。因此,在使用Macvlan的情况下,客户端动态获取IP的时候需要配置唯一的Client ID,并且DHCP服务器也要使用该字段作为机器标识,而不是使用MAC地址。
Linux内核3.19版本才开始支持IPvlan, Docker 从4.2版本起能够稳定支持IPvlan。IPvlan有两种不同的模式,分别是L2和L3。一个父接口只能选择其中一种模式,依附于它的所有子虚拟接口都运行在该模式下。
IPvlan L2模式和Macvlan bridge模式的工作原理很相似,父接口作为交换机转发子接口的数据。同-一个网络的子接口可以通过父接口转发数据,如果想发送到其他网络,则报文会通过父接口的路由转发出去。
L3模式下,IPvlan 有点像路由器的功能,IPvlan 在各个虚拟网络和主机网络之间进行不同网络报文的路由转发工作。只要父接口相同,即使虚拟机/容器不在同一个网络,也可以互相ping通对方,因为IPvlan会在中间做报文的转发工作。
部署示例:

确认内核版本: uname -a (需要4.2以上)

创建ipvlan网络:

docker network create -d ipvlan --subnet=192.168.88.0/24 --gateway=192.168.88.254 -o parent=eth0 ipvlan-network

创建容器:

docker run -itd --name=centos-test-net --privileged=true --network= ipvLan-network --ip=192.168.88.56 XXXX

进入容器确认:

docker exec - it XXXX /bin/bash -C ifconfig

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值