当前位置: 首页 > news >正文

【Docker】docker中容器之间通信方式

文章目录

  • 1. Docker容器之间通信的主要方式
    • 1.1 通过容器ip访问
    • 1.2. 通过宿主机的ip:port访问
    • 1.3. 通过link建立连接(官方不推荐使用)
    • 1.4. 通过 User-defined networks(推荐)
  • 2. 参考资料

1. Docker容器之间通信的主要方式

1.1 通过容器ip访问

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

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

通过宿主机的ip:port访问,只能依靠监听在暴露出的端口的进程来进行有限的通信。

容器之间通信不能用 localhost127.0.0.1,只能用宿主机的 ip:port 通信,但是主机的ip地址会随着宿主机的重启而变化

以 MySQL 容器为例如下:

  1. 创建容器

    docker run -it -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7
    
  2. 主机直接访问暴露的端口

    如下图,暴露端口的方式很方便主机与容器之间的通信,跟连接主机本地一样

1.3. 通过link建立连接(官方不推荐使用)

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

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

1.4. 通过 User-defined networks(推荐)

先给出结论:

  • 配置 -p 选项让宿主机和容器之间通过 暴露端口 来通信

  • 配置 --network 选项让容器加入同一个网络,也配置 --network-alias 选项让容器间相互连接

centosmysql容器之间通信为例,使用方法步骤如下:

  1. 创建网络

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

    docker network create dockerbetweennetwork
    
  2. 启动mysql容器时,加入创建的网络

    创建mysql容器加入到dockerbetweennetwork网络,也暴露了3306端口给主机使用

    # 创建mysql容器
    docker run -it -p 3306:3306 --name mysql_test \
    --network dockerbetweennetwork --network-alias mysql_network \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    
  3. 启动centos容器时,加入创建的网络

    # 创建centos容器
    docker run -it --name centos_test \--network dockerbetweennetwork --network-alias centos_network \
    -d centos
    
  4. 验证结果

    • 查看mysql容器的ip地址

      # 查看mysql容器ip地址
      docker inspect mysql_test
      

      我的mysql_test的ip地址是 172.21.0.2(mysql)

    • 进入centos容器中查看是否跟mysql容器在同一个网络

      # 进入centos容器中
      docker exec -it centos_test /bin/bash
      # ping 上面得到的mysql容器的地址
      ping mysql_test
      

2. 参考资料

我的文章:《如何查看一个Docker镜像有哪些版本.md》

我的文章:《Docker设置国内镜像源.md》

我的文章:《Docker快速入门实用教程.md》

我的文章:《Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务.md》

我的文章:《Docker安装Nacos服务.md》

我的文章:《如何修改Docker中的文件.md》

我的文章:《Docker容器间的连接或通信方式.md》

我的文章:《Docker安装的MySQL如何持久化数据库数据.md》

我的文章:《制作Docker私有仓库.md》

我的文章:《使用docker-maven-plugin插件构建发布推镜像到私有仓库.md》

我的文章:《解决Docker安装Elasticsearch后访问9200端口失败.md》


传送门:保姆式Spring5源码解析

欢迎与作者一起交流技术和工作生活

联系作者

相关文章:

【Docker】docker中容器之间通信方式

文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接(官方不推荐使用)1.4. 通过 User-defined networks(推荐) 2. 参考资料 1. Docker容器之间通信的主要方式 1.1 通…...

算法-归并排序-JAVA

下面是Java实现归并排序的示例代码&#xff1a; public class MergeSort {public void mergeSort(int[] arr) {if (arr null || arr.length < 1) {return;}int[] temp new int[arr.length];mergeSort(arr, temp, 0, arr.length - 1);}private void mergeSort(int[] arr, …...

Flask 进阶

Flask 如何访问项目以外的文件 在工作中&#xff0c; 要在项目里展示一些额外的文件&#xff0c; 包括但不限于静态的html。图片&#xff0c; log&#xff0c; 其他的都还好说&#xff0c; 但是当html的时候我就开始犯难了&#xff0c; 因为数量过多 我并不想把它塞进我项目的t…...

home-assistant整合sso

其他软件都可以通过nginx直接做代理添加鉴权&#xff0c;但是这个hass果然是用户安全隐私很强&#xff0c;做代理需要配置白名单&#xff0c;而且支持的三方鉴权都不太适合我的需求&#xff0c;非要改源码才行&#xff0c;后来我发现不用改源码的折中方式 参考文章 External …...

Ip-Limit: 轻量级注解式IP限流组件(二)

author: van , ggfanwentaogmail.comIp-Limit-Example: 轻量级注解式IP限流组件使用样例 项目简介 该项目为ip-limiter的使用示例项目。 ip-limiter地址&#xff1a; https://github.com/DDAaTao/ip-limiter 示例项目文件树 └─example├─handler│ └─BaseException…...

【C++】开源:Redis数据库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Redis数据库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…...

TCP/IP网络编程 第二十四章:制作HTTP服务器端

实现简单的Web服务器端 现在开始在HTTP协议的基础上编写Web服务器端。先给出Windows平台下的示例&#xff0c;再给出Linux下的示例。在这里我假设各位都有了有关HTTP的知识&#xff0c;如果不知道HTTP协议的具体内容可以参考的往期博客&#xff0c;有了这些基础就不难分析源代…...

React 前端应用中快速实践 OpenTelemetry 云原生可观测性(SigNoz/K8S)

OpenTelemetry 可用于跟踪 React 应用程序的性能问题和错误。您可以跟踪从前端 web 应用程序到下游服务的用户请求。OpenTelemetry 是云原生计算基金会(CNCF)下的一个开源项目&#xff0c;旨在标准化遥测数据的生成和收集。已成为下一代可观测平台的事实标准。 React(也称为 Re…...

Linux 多线程并发Socket服务端的实现( 11 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…...

2.7. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

Java 泛型&#xff08;generics&#xff09;是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制&#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。 Java 的泛型是伪泛型&am…...

单例模式与构造器模式

单例模式 1、是什么 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a;创建型模式&#xff0c;提供了一种创建对象的最佳方式&#xff0c;这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建 在应用程序运…...

SQL力扣练习(七)

1.行程和用户(262) 表&#xff1a;Trips ----------------------- | Column Name | Type | ----------------------- | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | reques…...

C语言假期作业 DAY 05

题目 一、选择题 1、如下程序的功能是&#xff08; &#xff09; #include <stdio.h> int main() { char ch[80] "123abcdEFG*&"; int j; puts(ch); for(j 0; ch[j] ! \0; j) if(ch[j] > A && ch[j] < Z) ch[j] ch[j] e - E; puts(ch)…...

php-golang-rpc使用roadrunner-server/goridge/v3/pkg/rpc和php的spiral/goridge3.2实践

golang代码&#xff1a; go get github.com/roadrunner-server/goridge/v3 package main import ( "fmt" "net" "net/rpc" goridgeRpc "github.com/roadrunner-server/goridge/v3/pkg/rpc" ) type App struct{} func (s *App) Hi(na…...

API常用签名验证方法(PHP实现)

使用场景 现在越来越多的项目使用的前后端分离的模式进行开发&#xff0c;后端开发人员使用API接口传递数据给到前端开发进行处理展示&#xff0c;在一些比较重要的修改数据接口&#xff0c;涉及金钱&#xff0c;用户信息等修改的接口如果不做防护验证&#xff0c;经常容易被人…...

kotlin高阶函数

kotlin高阶函数 函数式API:一个函数的入参数为Lambda表达式的函数就是函数式api 例子: public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {return filterTo(ArrayList<T>(), predicate) }上面这段函数: 首先这个函…...

kotlin list集合树

kotlin list集合树 记录一下 data class AreaSchemaManageDto(var id: Long? null,var pid: Long? null,var label: String? null,var children: MutableList<AreaSchemaManageDto>? null ) : Serializable { }逻辑 fun getAll(): List<AreaSchemaManageDto&g…...

基于Autoencoder自编码的64QAM星座图整形调制解调通信系统性能matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1星座图整形 4.2自编码器 4.3基于Autoencoder的星座图整形调制解调模型 4.4 实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .…...

【Spring】Spring 总览

一、简单介绍一下 Spring Spring是一个全面的、企业应用开发的一站式解决方案&#xff0c;贯穿表现层、业务层、持久层&#xff0c;可以轻松和其他框架整合&#xff0c;具有轻量级、控制反转、面向切面、容器等特征。 轻量级 &#xff1a; 空间开销和时间开销都很轻量 控制反…...

微软、OpenAI用上“数据永动机” 合成数据是晨曦还是暮光?

微软、OpenAI、Cohere等公司已经开始测试使用合成数据来训练AI模型。Cohere首席执行官Aiden Gomez表示&#xff0c;合成数据可以适用于很多训练场景&#xff0c;只是目前尚未全面推广。 已有的&#xff08;通用&#xff09;数据资源似乎接近效能极限&#xff0c;开发人员认为&a…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...