百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

62.Docker容器之间的通信(docker容器间通信详解)

wptr33 2025-01-27 00:37 56 浏览

文章目录

    • 前言
      • 一、单宿主机的容器间的通信:
        • 1.1通过容器默认ip访问
        • 1.2通过宿主机的ip:port访问
        • 1.3通过link(不推荐):
        • 1.4host模式:
        • 1.5自定义桥接网络networks(推荐):
      • 二、跨宿主机的容器通信:
    • 总结

前言

Dcoker容器之间的通信非常重要,也一直被关注,容器通信分为两类,一类是单宿主机的相互通信,一类是跨主机的容器通信,本篇来进行一个介绍进行梳理,集合我现阶段的docker应用的一些总结分享。

一、单宿主机的容器间的通信:

1.1通过容器默认ip访问

容器重启后;ip会发生变化。通过容器ip访问不是一个好的方案。

1.2通过宿主机的ip:port访问

通过宿主机的ip:port访问;只能依靠监听在暴露出的端口的进程来进行有限的通信。只能监听内网ip地址和端口,外网ip肯定不能放开

1.3通过link(不推荐):

运行容器时;指定参数link;使得源容器与被链接的容器可以进行相互通信;并且接受的容器可以获得源容器的一些数据;比如环境变量。
源容器mysql

docker run -itd --name test-mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 #被链接容器 centos docker run -itd --name test-centos --link test-mysql:mysql centos /bin/bash #进入test-centos docker exec -it test-centos /bin/bash

直接通过 link的名字或者link时候取的别名就能进入

通过link建立连接的容器被链接的容器能 ping 通源容器反过来不行。
在被链接的容器上查看环境变量

被链接容器会继承源容器的环境变量信息。
与/etc/hosts中的主机条目不同如果重新启动源容器则不会自动更新存储在环境变量中的IP地址。我们建议使用主机条目 /etc/hosts来解析链接容器的IP地址。
除了环境变量之外Docker还将源容器的主机条目添加到/etc/hosts文件中。

如果重新启动源容器;/etc/hosts链接容器上的文件将使用源容器的新IP地址自动更新;从而允许链接通信继续。

1.4host模式:

host模式,–net=host,会直接使用容器宿主机的网络命名空间。将不拥有自己独立的Network Namespace,它会使用宿主机的ip和端口。使用host模式优势就是效率高,但是缺点也很明显。

1.容器不再隔离,容器崩溃能导致宿主机崩溃。

2.容器内部不再拥有端口所有的资源,宿主机已经使用的资源容器不能再使用

1.5自定义桥接网络networks(推荐):

docker network来创建一个桥接网络;在docker run的时候将容器指定到新创建的桥接网络中;这样同一桥接网络中的容器就可以通过互相访问。
创建网络

docker network create t-network
启动容器时;加入创建的网络
docker run -it --network test-network --network-alias mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
启动被链接的容器
 docker run -it --network test-network --network-alias centos centos

二、跨宿主机的容器通信:

跨宿主机的容器通信就是用宿主机的ip加上宿主机端口就可以,也可以启用内网域名等等。不再进行过多的描述。

总结

上面就是我对于容器之间通信的总结,希望能帮助正在接触这块业务的朋友们,如果想跟我有更多的交流,欢迎关注我的头条号和微信公众号:Java时间屋 进行交流。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...