docker跨主机container通信的方法(配置公有ip)制作docker的基础的Linux系统镜像

docker跨主机container通信的方法,此文将为container配置与宿主机相同网段的ip地址,使container成为一个“实实在在”的主机,与vmware中 将虚拟机配置一个公有ip一样,从网络上看container享有一个独立ip。

https://blog.csdn.net/weixin_40612840/article/details/80260702

1.修改宿主机的网卡

意思好像是将 原本的物理网卡变成公共的,再为宿主的的网卡声明为br0。原本的物理网卡不配值ip地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-br0

vi  ifcfg-ens33删除ip,netmask,新增BRIDGE=br0。

vi  ifcfg-br0 设TYPE=Bridge,DEVICE=br0。

Service network restart

[root@cm network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0

[root@cm network-scripts]# cat ifcfg-br0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
TYPE=Bridge
DEVICE=br0
IPADDR=192.168.229.131
NETMASH=255.255.255.0
GATEWAY=192.168.229.2

2.开启容器并为容器配置ip

使用pipework为指定的container增加公网ip地址,缺点:但是这个ip地址只要container重启后就会消失,需要重新使用pipework在宿主机里再次为container配置公网ip地址。即使在container里使用systemctl start network也会失败

开启一个image并指定网络模式为none(这样,创建的容器就不会通过docker0自动分配ip了,而是根据pipework工具自定ip指定)
docker run -itd --net=none --name=my_centos image_id /bin/bash
docker run -itd --privileged --net=none 9c734ec0c21c /usr/sbin/init  ##以特权模式开启container

给该容器配置网络(注意网卡里的gateway不能缺失)

pipework br0 -i ens33 c5c9625fa24b 192.168.229.101/[email protected]
-i指定网卡名,后面为指定container的ip,netmask,gateway。
登录该容器

docker exec -it my_centos /bin/bash
ifconfig ens33 若无ifconfig则可yum安装net-tools工具

安装pipework

安装git

yum install git

安装pipework

git clone https://github.com/jpetazzo/pipework

使pipework命令生效

cp ~/pipework/pipework /usr/local/bin/

安装相应依赖软件bridge-utils(网桥)

yum install iputils-arping bridge-utils –y
 

制作docker的基础的Linux系统镜像

tar-cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .(“不要忽略结尾处的”.””)

发布了27 篇原创文章 · 获赞 1 · 访问量 2618

猜你喜欢

转载自blog.csdn.net/bck1453925668/article/details/94887945