Docker绑定固定IP跨主机容器互访 *** 作

Docker绑定固定IP跨主机容器互访 *** 作,第1张

Docker绑定固定IP/跨主机容器互访 *** 作

本文主要介绍Docker绑定固定IP/跨主机容器访问 *** 作,有很好的参考价值,希望对大家有所帮助。来和边肖一起看看吧。

前言

以前用piece分配静态ip是暂时的,重启后就会失效,而且piece绑定的ip物理机、虚拟机、docker容器都在同一个网段上,在生产环境下难度很大。现在用docker自己的网络实现固定ip分配,重启不会消失。

环境介绍

IP 容器分配网段 的启动容器的id192.168.1.105192.168.1.106

绑定步骤

首先运行192.168.1.105虚拟机。

步骤1:创建自定义网络

dockernetworkcreate-subnet=172.172.0.0/24docker-br0

注意:此处选择172.172.0.0的网段,也可以指定其他任意空空闲网段。docker-br0是自定义桥的名称,可以自己任意命名。

注意:这里的子网掩码应该是255.255.255.0,也就是IP后面的24。因为后面要用iptables配置路由表,所以我之前不能用255.255.0.0配置。所以这里配置为24。

桥创建后,使用ifconfig查看,会有一个额外的桥,在docker启动或重启后会自动显示。永久的,可以使用dockernetworkrmdocker-br0移除网桥。

步骤2:在您的自定义网段中选择任意IP地址作为您想要启动的容器的IP。

dockerrun-I-d-netdocker-br0-IP172.172.0.10-namenginx-v/usr/local/software/:/mnt/software/3bee3060BFc8/bin/bash

注意:在创建容器时,172.172.0.10被选为第一步中创建的网段中的静态IP地址。从docker-br0桥开始。-v是mount,表示需要将哪个本地目录装入容器。3bee3060bfc8是镜像ID。

使用dockerexec-itnginx/bin/bash进入启动的容器,使用yuminstallnet-tools下载iptables,然后使用ifconfig查看容器ip。

步骤3:测试这台机器和容器是否ping通。

#测试ping百度 [root@e98109ef9fd6/]#pingwww.baidu.com PINGwww.a.shifen.com(119.75.213.61)56(84)bytesofdata. 64bytesfrom119.75.213.61(119.75.213.61):icmp_seq=1ttl=56time=10.1ms 64bytesfrom119.75.213.61(119.75.213.61):icmp_seq=2ttl=56time=8.26ms #测试宿主机 [root@e98109ef9fd6/]#ping192.168.1.105 PING192.168.1.105(192.168.1.105)56(84)bytesofdata. 64bytesfrom192.168.1.105:icmp_seq=1ttl=64time=0.099ms 64bytesfrom192.168.1.105:icmp_seq=2ttl=64time=0.081ms #测试ping另一台虚拟机 [root@e98109ef9fd6/]#ping192.168.1.106 PING192.168.1.106(192.168.1.106)56(84)bytesofdata. 64bytesfrom192.168.1.106:icmp_seq=1ttl=63time=1.67ms 64bytesfrom192.168.1.106:icmp_seq=2ttl=63time=0.587ms

固定ip与容器的绑定已经完成,下面是跨主机互相访问的容器。

跨主机容器的互访

第四步:在192.168.1.106虚拟机上,将一个固定ip绑定到容器,按照前面的步骤1到3进行 *** 作。

第五步:两个容器互相访问,发现跨主机容器访问无法ping通。

[root@e98109ef9fd6/]#ping172.172.1.10 PING172.172.1.10(172.172.1.10)56(84)bytesofdata. From192.168.1.105icmp_seq=1DestinationHostUnreachable From192.168.1.105icmp_seq=2DestinationHostUnreachable From192.168.1.105icmp_seq=3DestinationHostUnreachable [root@e98109ef9fd6/]#ping172.172.0.10 PING172.172.0.10(172.172.0.10)56(84)bytesofdata. From192.168.1.106icmp_seq=1DestinationHostUnreachable From192.168.1.106icmp_seq=2DestinationHostUnreachable From192.168.1.106icmp_seq=3DestinationHostUnreachable

步骤6:配置路由表

#添加路由规则

Ip路由添加对端容器所在的IP网段/子网掩码对端虚拟机的ipdev通过哪个网卡进行通信?

比如:

ip路由add172.172.1.0/24via192.168.1.106deveno16777736

添加后,您可以使用route命令查看添加的规则,也可以使用iproutedel172.172.1.0/24删除路由规则。

分别在192.168.1.105和192.168.1.106虚拟机上添加相应的路由规则!

192.168.1.105:ip路由add172.172.1.0/24via192.168.1.106deveno16777736

192.168.1.106:ip路由add172.172.0.0/24via192.168.1.105deveno16777736

步骤7:在两个容器中互相访问,发现可以跨主机容器ping对方。

[root@e98109ef9fd6/]#ping172.172.1.10 PING172.172.1.10(172.172.1.10)56(84)bytesofdata. 64bytesfrom172.172.1.10:icmp_seq=1ttl=62time=0.636ms 64bytesfrom172.172.1.10:icmp_seq=2ttl=62time=0.411ms 64bytesfrom172.172.1.10:icmp_seq=3ttl=62time=0.472ms [root@8343ad7e7f0f/]#ping172.172.0.10 PING172.172.0.10(172.172.0.10)56(84)bytesofdata. 64bytesfrom172.172.0.10:icmp_seq=1ttl=62time=0.920ms 64bytesfrom172.172.0.10:icmp_seq=2ttl=62time=0.674ms 64bytesfrom172.172.0.10:icmp_seq=3ttl=62time=0.657ms

附加知识:docker-编写自定义网络,固定容器ip地址

由于默认网桥桥接网络,重启容器后,ip地址将会改变。在某些情况下,我们希望固定容器的IP地址。

Docker-compose是Docker的一个编排工具,可以创建网络、容器等。相对于命令模式。

使用配置文件相对方便,可以跟踪问题。

直接粘贴docker-compose.yml文件

version:'2' services: nginx: image:nginx:1.13.12 container_name:nginx restart:always tty:true networks: extnetwork: ipv4_address:172.19.0.2 networks: extnetwork: ipam: config: -subnet:172.19.0.0/16 gateway:172.19.0.1

描述:

网关是网关地址。

子网是网络号段

Ext是自定义的extnetwork名称。

上面配置中我们nginx容器的固定ip是172.19.0.2。

示例,自定义网络模式:

version:'2' services: nginx: image:nginx:1.13.12 container_name:nginx restart:always networks: extnetwork: ports: -80:80 volumes: -'/nginx/conf.d:/etc/nginx/conf.d' nginx2: image:nginx:1.13.12 container_name:nginx2 restart:always networks: extnetwork: ipv4_address:172.19.0.2 db: image:mysql:5.7 container_name:db volumes: -/var/lib/mysql:/var/lib/mysql restart:always networks: extnetwork: ports: -3306:3306 environment: MYSQL_ROOT_PASSWORD:wordpress MYSQL_DATABASE:wordpress MYSQL_USER:wordpress MYSQL_PASSWORD:wordpress wordpress: image:wordpress:latest container_name:wordpress depends_on: -db ports: -"8000:80" restart:always networks: extnetwork: environment: WORDPRESS_DB_HOST:db:3306 WORDPRESS_DB_NAME:wordpress WORDPRESS_DB_USER:wordpress WORDPRESS_DB_PASSWORD:wordpress networks: extnetwork: ipam: config: -subnet:172.19.0.0/16 gateway:172.19.0.1

以上Docker绑定固定IP/跨主机容器访问 *** 作是边肖分享的全部内容。希望能给你一个参考,多多支持我们。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存