docker设置ip网段问题--Bridge模式

背景:
将springcloud项目的jar分发到不同机器并根据dockerfile创建docker镜像,运行各个服务。
参考:jenkins+maven+docker+gitlab私服,自动化部署springcloud(内置脚本):https://blog.csdn.net/weixin_41546244/article/details/109889877

问题:
为了服务稳定每个服务分发不同服务器部署两个java进程,启动过程中,服务始终无法注册到注册中心,**根因:**因为不同的机器起着同一个服务,然后docker的默认ip一样,导致始终只有一个注册到,另外的注册不到,达不到预期效果。

思路
每台服务器run时候分配固定ip,但是始终还是按broker0分配默认的。(思路错了)

知识扩展:
-------docker的网络模式(这里只简单的介绍两种,一共四种自行百度):

Bridge模式
当Docker进程启动时,默认会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

Host模式
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

注:这里我采用的是Bridge模式

步骤如下:
1.vim /etc/docker/daemon.json(设置网段)
添加"bip":“88.55.0.1/24”(自定义
在这里插入图片描述

2.systemctl restart docker.service(重启docker)

3.route -n(查看是否加入)
在这里插入图片描述
4.firewall-cmd --permanent --zone=trusted --change-interface=docker0(配置 docker 容器内允许访问外部网络)

5.firewall-cmd --reload(重启防火墙)

注: 具体每一台机器分配的网段自行配置。

转载注明出处,谢谢。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值