4.5-容器之间的link

        我们在实际项目中可能会有种需求,假如我们有个后台项目,它要访问数据库,比如MySQL,它想要访问数据库,就需要数据库的ip和端口。如果有两个容器,一个容器启动的是数据库的MySQL服务,另一个容器启动的是后台服务,后台服务需要访问数据库。在这前我们必须要知道数据库的IP地址是什么。也就是说我们要手工的创建一个数据库MySQL的容器,启动之后再讲数据库容器的IP地址记录下来,然后在启动后台服务的时候,将数据库的IP地址配置在代码里面作为数据库的参数。

        这种方式有一个问题,在我们写代码的时候有可能还不知道数据库的IP地址是什么。但是我们可以先给数据库容器起个名字,可以通过这个名字去访问这个数据库容器,不需要知道IP地址了。名字是不会变的。这时我们可以通过Docker的link机制,可以在创建第二个容器的时候,把它link到第一个容器上面。这样我在访问第一个容器的时候通过name就可以访问了。

        现在我通过下面的命令创建容器flask-hello-docker1:

docker run --name flask-hello-docker1 -d -p 20000:20000 flask-hello-docker

        然后,通过下面的命令创建flask-hello-docker2,并且将它link到flask-hello-docker1上面:

docker run --name flask-hello-docker2 --link flask-hello-docker1 -d -p 30000:30000 flask-hello-docker

        创建完flask-hello-docker2容器之后,进入到这个容器里面。

docker exec -it flask-hello-docker2 /bin/sh

        docker容器安装ping

apt-get update && apt-get install -y iputils-ping

        在container里面执行ip a

apt-get update && apt-get install -y iproute2

        然后,可以通过下面的命令,在flask-hello-docker2容器里面直接通过name,ping通flask-hello-docker1。

ping flask-hello-docker1

        反过来,如果进入到容器flask-hello-docker1里面,通过ping flask-hello-docker2,通过名字ping是不行的。通过--link创建的连接具有方向性。

        这个--link在实际情况下我们用的并不多。还有更方便的方式。

        然后,我们将flask-hello-docker2停掉,然后删除掉,再重新运行flask-hello-docker2。

docker run --name flask-hello-docker2  -d -p 30000:30000 flask-hello-docker

        这次运行flask-hello-docker2没有用--link,回到最原始的状态。

        接下来我们来看另外的一个内容,我们来看看docker network。

        我们在创建容器的时候,默认会连bridge这个network,但实际上我们在创建容器的时候可以指定连接的network。可以指定使用host或none这个network。甚至我们可以自己建立一个bridge,然后我们将新建的容器连到这个bridge上面。

        新建一个network其实很简单。

docker network create -d bridge my-bridge

        -d表示:-driver。

        然后,通过下面的命令可以查看linux上的bridge。

brctl show

        可以看到多了一个br-708dac0d94f1的bridge,这个就是我们新建的my-bridge。

        然后,我们可以通过--network指定我们新建容器连接的network是哪个。

docker run --name flask-hello-docker3 --network my-bridge -d -p 40000:40000 flask-hello-docker

        现在我们可以看到my-bridge这个network上已经连接上container了。没连容器之前interfaces是空的。

        我们也可以用下面的命令,查看my-bridge这个network连接的container信息。

docker network inspect 708dac0d94f1

        现在,一共有3个正在运行的container。

        flask-hello-docker1和flask-hello-docker2连接的都是bridge这个network,flask-hello-docker3这个容器连接的是my-bridge这个network。其实,对于flask-hello-docker1和flask-hello-docker2来讲,我们也有办法将它们连接到my-bridge这个network上面。

        现在,将flask-hello-docker2连接到my-bridge这个network上面。

docker network connect my-bridge flask-hello-docker2

        然后,可以看到flask-hello-docker2已经连到了my-bridge这个network上面。其实,现在flask-hello-docker2即连到bridge上面,也连到了my-bridge上面。

        然后,我们进入到flask-hello-docker3这个容器的shell里面。

docker exec -it flask-hello-docker3 /bin/sh

        接下来我们来看一个比较神奇的事情,在容器flask-hello-docker3里面直接名称ping flask-hello-docker2。

ping flask-hello-docker2

        根据之前讲的内容,如果在容器里面想通过名称直接ping另外一个容器的话,要通过--link参数指定才行,但是如果两个容器都连接到了自定义的network而不是默认的bridge这个network上面,是默认配置好相互之间的link的。

        现在容器flask-hello-docker2和容器flask-hello-docker3都连接到了自己创建的my-bridge上面,所以它们两个容器可以相互通过名字ping通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时间序列分析【python代码实现】

时间序列分析是一种用于建模和分析时间上连续观测的统计方法。 它涉及研究数据在时间维度上的模式、趋势和周期性。常见的时间序列分析包括时间序列的平稳性检验、自相关性和部分自相关性分析、时间序列模型的建立和预测等。 下面是一个使用Python实现时间序列分析的示例&…

通过分析波形,透彻理解 UART 通信

UART是一种异步全双工串行通信协议,由 Tx 和 Rx 两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。 异步通信以一个字符为传输单位…

Vue修改密码功能的源代码

基本需求 输入框不能为空 旧密码表单提交时必须正确 两次输入新密码一致 限定新密码的复杂度&#xff0c;这里是长度在 6 到 20 个字符 <template><el-form ref"form" :model"user" :rules"rules" label-width"80px"><…

给企业做公众号运营你都有哪些宝贵经验?

运营企业公众号需要长期的坚持和不断的创新&#xff0c;如何运营好一个企业公众号&#xff0c;使其成为企业与受众互动、传递价值、提升品牌形象的平台&#xff0c;是许多企业所面临的挑战。但只要不断学习&#xff0c;总结经验&#xff0c;就一定能够找到适合自己企业的公众号…

数据集笔记 :PEMS-BAY

数据地址&#xff1a;DCRNN - Google 云端硬盘 各station 位置&#xff1a;DCRNN/data/sensor_graph/graph_sensor_locations_bay.csv at master liyaguang/DCRNN (github.com) 1 读取 数据 import h5py fileDownloads/pems-bay.h5fh5py.File(file,r) f.keys()f[speed] #&…

几个python 编程题。

请定义一个Cylinder类&#xff0c; (1)每个Cylinder类对象可以存储一个圆柱体(包括半径和高) (2)具有用于初始化半径和高的方法 (3)具有输出圆柱体信息的方法Printlnfo ; (4)具有计算圆柱体体积的方法GetVolume. class Cylinder:def __init__(self, radius0.0, height0.0):self…

PHP调用API接口的方法及实现(一键采集淘宝商品详情数据)

随着互联网、云计算和大数据时代的到来&#xff0c;越来越多的应用程序需要调用第三方的API接口来获取数据&#xff0c;实现数据互通和协同工作。PHP作为一种常用的服务器端语言&#xff0c;也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用API接口的方…

JMeter+Jenkins接口压力测试持续集成

项目介绍 接口功能测试应用&#xff1a; http://www.weather.com.cn/data/cityinfo/<city_code>.html 测试功能&#xff1a;获取对应城市的天气预报 请求方法&#xff1a;Get 压测脚本开发工具&#xff1a;jmeter 源码脚本位置&#xff1a; https://github.com/shife…

基于SpringCloud的动漫论坛

基于SpringCloud的动漫论坛《BOKI》 摘要&#xff1a;鉴于现如今的互联网网站的存在形式&#xff0c;网站内部有可能内嵌论坛&#xff0c;因此&#xff0c;该项目中实现一个整体的、可移植性强的插件式论坛&#xff0c;论坛就有可能突破ACG主题的限制&#xff0c;实现论坛与主…

ZKP15.3 Formal Methods in ZK (Part II)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 15: Secure ZK Circuits via Formal Methods (Guest Lecturer: Yu Feng (UCSB & Veridise)) 15.3 Formal Methods in ZK (Part II) Formally prove that a circuit is NOT underconstrained Existing Strategies Static …

码题集-AC自动机(模板)

AC自动机&#xff1a; &#xff08;1&#xff09;一个长串&#xff0c;多个短串&#xff0c;求长串中匹配了几个短串&#xff08;包括分别匹配了几个&#xff0c;总共匹配了几类&#xff09; &#xff08;2&#xff09;此处模板为长串中匹配了几个短串&#xff1b; &#xf…

异步操作的方法

在高级语言中已经有了异步的原语言&#xff0c;而在C 中的最好的方式就是 libevent 的方式,我这还是相当认同的&#xff0c;高级语言就不需要在苦哈哈的&#xff0c;事件转圈了&#xff0c;但是原理还是以事件为基础的 一句话就是在一个循环中等着他执行完,这个循环中有很多其他…

NX二次开发UF_CURVE_create_arc_thru_3pts 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_thru_3pts Defined in: uf_curve.h int UF_CURVE_create_arc_thru_3pts(int create_flag, double first_point [ 3 ] , double second_point [ 3 ] , double th…

单调队列(算法)

单调队列是求解区间最大值或最小值的算法 正向遍历时&#xff0c;是先入后出 , 队列中的下标是按照从左往右递增 , 由于正向遍历&#xff0c;当前下标比之前下标大&#xff0c;所以与末尾值比较 &#xff0c; 并且入列时添加在末尾 , 出列弹出队首 class Solution:def maxSli…

Git提示 Connection closed by remote host

问题如下图&#xff1a; 解决&#xff1a; 删除./ssh目录下的config文件&#xff0c;如下图config文件是新增的 原因&#xff1a;不知道什么原因&#xff0c;连接外网后突然断开或导致自动增加config文件。

【Python】jieba分词基础

jieba分词主要有3种模式&#xff1a; 1、精确模式&#xff1a;jieba.cut(文本, cut_allFalse) 2、全模式&#xff1a;jieba.cut(文本, cut_allTrue) 3、搜索引擎模式&#xff1a;jieba.cut_for_search(文本) 分词后的关键词提取&#xff1a; jieba.analyse.textrank(txt,t…

算法通关村第十三关|黄金挑战|数论问题

1.辗转相除法&#xff08;欧几里得算法&#xff09; 假如 8 和 12 的最大公因数是 4 &#xff0c;就记作 gcd(8,12)4. 辗转相除法重要规则&#xff1a;若 r 是 ab 的余数&#xff0c;则 gcd(a,b)gcd(b,r) 。 基于该规则的代码实现&#xff1a; int gcd(int a, int b) {int …

PPP/INS紧组合代码学习

前言&#xff1a; 本文是基于IGNAV的PPP/INS紧组合学习&#xff0c;在此之前需要具备GNSS/INS松组合知识&#xff0c;武汉大学的i2nav实验室的KF-GINS项目可以作为学习模板。可以参考这篇优秀博文&#xff0c;链接&#xff1a;KF-GINS源码阅读_李郑骁学导航的博客-CSDN博客 IG…

Kubernetes技术与架构-安全性

本文主要从不同层面与多个维度描述Kubernetes技术与架构的安全性。 云原生的安全性 从系统分层架构的角度分析&#xff0c;自底向上&#xff0c;云原生的安全性主要包括云、集群、容器以及代码四个层面&#xff0c;简称云原生4C安全&#xff0c;其架构图如下所示&#xff1a;…

Vue3水印(Watermark)

APIs 参数说明类型默认值必传width水印的宽度&#xff0c;默认值为 content 自身的宽度numberundefinedfalseheight水印的高度&#xff0c;默认值为 content 自身的高度numberundefinedfalserotate水印绘制时&#xff0c;旋转的角度&#xff0c;单位 number-22falsezIndex追加…