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

news2024/11/26 0:53:43

文章目录

  • 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》


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

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

联系作者

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

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

相关文章

OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG

视频分割背景 1.概念介绍2. 函数介绍MOG算法MOG2算法GMG算法 原视频获取链接 1.概念介绍 视频背景扣除原理:视频是一组连续的帧(一幅幅图组成),帧与帧之间关系密切(GOP/group of picture),在GOP中,背景几乎…

前端面试题汇总大全!

文章目录 前端面试题汇总大全(含答案超详细)-- 持续更新一、HTML 篇1.xhtml和html有什么区别2.行内元素有哪些?块级元素有哪些? 空(void)元素有那些?行内元素和块级元素有什么区别3. 简述一下你对 HTML 语义化的理解&a…

sql进阶 之case表达式

case表达式 CASE表达式是SQL里非常重要而且使用起来非常便利的技术,我们应该学会用它来描述条件分支。本节将通过行列转换、已有数据重分组(分类)、与约束的结合使用、针对聚合结果的条件分支等例题,来介绍CASE表达式的用法。标红…

在 3dsmax 中创建电影场景

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 有时,通过简单的图像和简单的技术,我们可以创建有效的输出。在本教程中,您将学习如何在 3ds max 中使用三个简单图像创建电影场景。 步骤-1 让我们在 photoshop 中为场…

Java 二维码生成解析

生成二维码需要两个jar包 Download core JAR 3.5.1 ➔ With all dependencies! Download javase JAR 3.5.1 ➔ With all dependencies! 将下载后的jar包添加项目依赖 import com.google.zxing.*; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.googl…

具身智能,是机器人的“冷饭热炒”吗?

大模型正如火如荼,下一个AI风口就来了。 如果你关注2023世界人工智能大会等行业峰会,以及英伟达、微软、谷歌、特斯拉和国內科技大厂的最新发布会,除了“大模型”,应该会听到另一个高频词——具身智能。 所谓具身智能Embodied AI …

【运维】 第05课:Curl 命令最常见使用方式及案例

本课时我们主要了解 Curl 命令的使用和常见案例。在学习本课时的内容之前,你需要先了解 HTTP 的请求过程,以及 Linux 操作系统的基础知识。 首先,我们先来介绍一下 Curl ,Curl 是一个Linux命令行中的工具,它模拟客户端…

JAVA解析EXCEL(JExcelAPI,POI,EasyExcel)

前言 文章目录 前言JExcelAPIDemo POIHSSFWorkBookXSSFWorkBookDemo SXSSFWorkBookDemo XSSFReaderDemo EasyExcelDemo demo代码:https://github.com/RwTo/excel-demo JAVA解析Excel 一般有三种方式 JExcelAPI POI EasyExcel JExcelAPI 官网:https://je…

centos安装psql客户端

前言:postgresql数据库采用docker部署,想在宿主机测试访问或数据库备份,则需要安装postgresql客户端,即psql命令 环境:centos7,x86,yum 下面以 postgresql-11 为例 安装镜像 yum install htt…

探索 APK 文件的内部:了解 Android 应用程序的组织结构

I. 什么是 APK 文件 APK (Android application package) 是构建和发布 Android 应用程序的关键组成部分,APK 文件是应用程序的打包格式,它将应用程序的代码、资源和清单信息组合在一起,以便在设备上进行安装和运行。 简称 ”安装包“&#…

Linux系统安装部署Jenkins详细教程(图文讲解)

前言:最近需要使用Jenkins部署项目,所以想出一篇关于如何使用Linux系统安装部署Jenkins的相关教程,整体部署过程还是挺顺利的,特此分享一下! 目录 一、安装JDK11和Tomcat11 二、准备Jenkins安装包 三、部署Jenkins…

云端环境跑通BaseLine

云端环境跑通BaseLine 一、实验流程实践 1.报名 报名日期:2023年7月17日,参与AI夏令营第一期 彳 z h i 亍 c h u ,都为第四声 \overset{zhi}{彳}\overset{chu}{亍},都为第四声 彳zhi亍chu,都为第四声 怎么报名的&a…

C++OpenCV(7):图像形态学基础操作

🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 文章目录 膨胀与腐蚀形态学基础 膨胀与腐蚀 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。 膨胀操作是取每个位置领域内最大值&#xff0…

linux系统编程--线程同步

1.同步概念 所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是指在两个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一致…

13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码

基本思想:简单使用nvidia的硬件解码进行oak相机的编码和解码学习 一、在本机rtx3060配置好显卡驱动和cuda之后进行下面操作50、ubuntu18.04&20.04CUDA11.1cudnn11.3TensorRT7.2/8.6Deepsteam5.1vulkan环境搭建和YOLO5部署_ubuntu18.04安装vulkan_sxj731533730的…

C# 右键菜单 contextMenuStrip

最近需要使用到C#的右键菜单contextMenuStrip控件。 这里记录一下。 首先在工具箱中找到contextMenuStrip控件。将他拖到你的窗体中,如下图所示: 默认名称为:contextMenuStrip1. 然后将你需要使用右键属性的控件和contextMenuStrip1绑定起…

Mac上安装sshfs

目录 写在前面安装使用参考完 写在前面 1、本文内容 Mac上安装sshfs 2、平台 mac 3、转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/130156287 安装 参考:https://ports.macports.org/port/sshfs/ 通过port安装 点击啊insta…

IC设计从业者必备的宝藏网站!

对于IC设计从业者而言,获取准确的学习资源,行业资讯直观重要,今日我们推荐ic行业专业的宝藏网站,希望对从业者有所帮助。 01-找开源项目的网站 GitHub除了Git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论…

WebClient,HTTP Interface远程调用阿里云API

HTTP Interface Spring 允许我们通过定义接口的方式&#xff0c;给任意位置发送 http 请求&#xff0c;实现远程调用&#xff0c;可以用来简化 HTTP 远程访问。需要webflux场景才可 <dependency><groupId>org.springframework.boot</groupId><artifactId&…

进阶C语言——文件操作(上)

本章文章主要是关于文件教学的&#xff0c;大家可能会对C语言中的文件可能有点陌生&#xff0c;这两个看起老来完全扯不上边的东西&#xff0c;但是实际上他们有很多的关联&#xff0c;本章文章将讲解一些文件的打开和关闭&#xff0c;并和一些库函数一起使用之后的效果&#x…