Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker容器实现跨主机间通讯

Docker容器实现跨主机间通讯

作者头像
互联网-小阿宇
发布于 2022-11-21 13:26:59
发布于 2022-11-21 13:26:59
70100
代码可运行
举报
文章被收录于专栏:互联网-小阿宇互联网-小阿宇
运行总次数:0
代码可运行

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。 🎈 博客首页:互联网-小啊宇

Docker容器实现跨主机间通讯

实验环境

主机IP

系统

服务

192.168.1.10【docker01】

centos7

docker

192.168.1.20【docker02】

centos7

docker

安装docker并指定网段


两台服务器都操作 关闭防火墙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld && systemctl disable firewalld

关闭沙盒

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setenforce 0
vim /etc/selinux/config
#修改
SELINUX=disabled

开启路由转发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
sysctl -p

安装docker

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install docker

指定docker网段,另一台设置不同的地址段区分开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/lib/systemd/system/docker.service
#修改
在ExecStart=后面进行添加

重新加载配置文件并启动docker

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl daemon-reload
systemctl restart docker

这时候可以看到有一块docker0的网卡并且IP段为指定的

此刻docker容器跨主机是不能通讯的

测试一下,分别创建容器,互相ping

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker01 ~]# docker run -itd --name Ayu1 centos:7

[root@docker02 ~]# docker run -itd --name Ayu2 centos:7

docker01主机进入容器并查看ip

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker01 ~]# docker exec -it Ayu1 bash
[root@9990a5968835 /]# yum -y install net-tools  #容器内默认不带一些常用命令 安装一下
[root@9990a5968835 /]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.22.2  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::42:c0ff:fea8:1602  prefixlen 64  scopeid 0x20<link>
        ether 02:42:c0:a8:16:02  txqueuelen 0  (Ethernet)
        RX packets 8097  bytes 23203953 (22.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7877  bytes 619102 (604.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker02主机进入容器并查看ip

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker02 ~]# docker exec -it Ayu2 bash
[root@602f5c97faee /]# yum -y install net-tools
[root@602f5c97faee /]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.33.2  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::42:c0ff:fea8:2102  prefixlen 64  scopeid 0x20<link>
        ether 02:42:c0:a8:21:02  txqueuelen 0  (Ethernet)
        RX packets 8230  bytes 23212727 (22.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7961  bytes 634122 (619.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此时可以尝试Ayu1容器 与 Ayu2容器 互相是否能ping通 Ayu1 ping Ayu2

Ayu2 ping Ayu1

添加主机路由 实现容器跨主机通讯

docker01 主机ip{192.168.1.10} docker网段段{192.168.22.0/24}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker01 ~]# route add -net 192.168.33.0/24 gw 192.168.1.20

docker02 主机ip{192.168.1.20} docker网段段{192.168.33.0/24}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker02 ~]# route add -net 192.168.22.0/24 gw 192.168.1.10

测试容器间是否可以ping通

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
5 年工作经验,Docker 的几种网络模式都说不清,你敢信?
Docker 在安装后自动提供 3 种网络,可以使用 docker network ls 命令查看
民工哥
2022/10/27
1.1K0
5 年工作经验,Docker 的几种网络模式都说不清,你敢信?
Docker容器互访三种方式
docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢。
py3study
2020/04/01
3.8K0
部署 Consul服务实现Docker容器跨主机通信
consul 数据中心的含义,可以将其当做数据库来理解,类似于Redis等非关系型数据库,采用的是键-值对的方式,存放着各个容器的IP及端口信息。 consul的功能很强大,可以以群集的方式运行,并且具备健康监测等功能。
小手冰凉
2020/08/05
2.7K2
部署 Consul服务实现Docker容器跨主机通信
LAMP架构应用实战—Apache服务基于IP的虚拟主机配置
LAMP架构应用实战—Apache服务 基于IP的虚拟主机配置 基于IP的虚拟主机————就是说每个虚拟主机使用一个独立的IP地址 服务器配置多块网卡实现,或者同一块网卡配置多个IP实现都可以 今天模拟的环境是同一网卡配置多个IP地址实现基于IP的虚拟主机配置 一:新增IP地址 [root@Centos ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:AA:CA:2B inet addr:192.16
民工哥
2020/09/16
8340
LAMP架构应用实战—Apache服务基于IP的虚拟主机配置
【Docker】docker网络—bridge网桥网络详悉
文章目录 一、docker网络概述 二、docker网络—桥接模式 三、用户自定义网桥和默认网桥之间的区别 四、docker网络—bridge桥接网络演示说明 1、默认网桥网络 2、用户自定义网桥网络 五、参考链接 一、docker网络概述 Docker 容器和服务如此强大的原因之一是,可以将它们连接在一起,或者将它们连接到非 Docker 工作负载。 Docker 容器和服务甚至不需要知道它们部署在 Docker 上,或者它们的对等节点是否也是 Docker 工作负载。 无论 Docker 主机运行
宝耶需努力
2022/12/13
2.5K0
【Docker】docker网络—bridge网桥网络详悉
Linux VXLAN
VXLAN是Virtual eXtensible Local Area Network的缩写,RFC 7348的标题“A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks”,说明了VXLAN是一个在传统Layer 3网络上架设出来的Layer 2 overlay网络。RFC Abstract如下:
Linux云计算网络
2019/07/31
2.9K0
Linux VXLAN
007.基于Docker的Etcd分布式部署
提示:quay.io/coreos/etcd镜像国内可能无法pull,可在国外节点pull,然后scp至集群节点。
木二
2019/07/26
5270
如何手动给Docker容器设置静态IP
要点: 1.首先需要在宿主机上虚拟出来一个真实可用桥接网卡比如br0 2.docker启动的时候默认使用br0进行桥接网络 3.创建docker容器的时候使用--net=none模式 4.手动为每个创建的容器生成静态ip。但是ip每次在重启容器的时候就会失效 这样的方式其实也是必须自己维护一个ip资源池,不然的话可能ip有问题就会导致不能访问 其实还是利用了docker桥接网络的模式,在宿主机创建一对虚拟网卡,然后将一块桥接到本地网桥上,经另外一块网卡通过容器的命名空间绑定到该容器上,然后对容器 命名空间中
BGBiao
2018/02/26
3.4K0
kubernetes(三)之Docker网络详解
容器网络详解 虚拟网络类型 虚拟化常见的网络类型(虚拟桥接式网络) 隔离桥:127.0.0.1 仅主机桥:不能对外通信 路由器桥: 可以被nat发出去,但是不能 NAT桥: NAT连接追踪实现主
alexhuiwang
2020/09/23
5010
kubernetes(三)之Docker网络详解
Docker网络模型
host网络类型:容器与宿主机共用网络模式,即容器的IP与宿主机的一样,容器内开通的端口就是占用宿主机同样的端口,包括主机名都是相同的
CoderJed
2021/04/14
5640
Linux 下实践 VxLAN:虚拟机和 Docker 场景
在上篇文章中,我们已经探讨了 VxLAN 的概念和基本原理,本文就基于 Linux 对 VxLAN 做一个实践。如果有相关概念不懂的可以先看那篇文章。
Linux云计算网络
2019/07/30
3K0
7-docker容器的网络通信
Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,多host网络又分为原生网络和第三方网络,如下:
jackxiao
2021/11/16
6870
Docker 网络基础与实现
Docker是服务于应用的,Docker网络就是解决容器中应用的网络通信问题,让容器中的应用就像在一台独立的主机上运行一般。
windealli
2022/07/14
9860
Docker 网络基础与实现
18 Sep 2019 容器网络(一)
所以,当容器不能上网时,首先ping docker0网桥,看是否能正常连接docker0网桥,然后查看docker0及相应的veth pair设备的iptables规则是否有异常,一般就能解决容器不能上网的问题了。
俊采
2023/10/17
2250
详解Docker——你需要知道的Docker进阶知识四
在我们安装 Docker 后,会自动创建三个网络。我们可以使用下面的命令来查看这些网络:
云原生
2021/05/31
7560
docker overlay
环境说明 hostnameipclient1192.168.6.134client2192.168.6.135 [root@client1 ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@client2 ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@client1 ~]# docker -v Docker ve
零月
2018/04/25
9700
docker overlay
一文读懂 Kubernetes 容器网络
在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则:
iMike
2021/02/07
6820
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信。下面将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。前面已经在Docker容器学习梳理--基础知识(2)这一篇中详细介绍了Docker的网络配置以及pipework工具。 docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,
洗尽了浮华
2018/01/23
3.6K0
Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
Docker 网络
docker网络主要是解决容器联网问题,也是我们使用容器中最重要的一个环节,如果容器没有网络则无法向网络中提供服务。
星哥玩云
2022/09/15
4290
docker单主机网络
当你安装Docker时,它会自动创建三个网络。你可以使用以下docker network ls命令列出这些网络:
yuezhimi
2020/09/30
8740
相关推荐
5 年工作经验,Docker 的几种网络模式都说不清,你敢信?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验