【Docker】自定义网络:实现容器之间通过域名相互通讯

文章目录

    • 一. 默认网络:docker0网络的问题
    • 二. 自定义网络
    • 三. nginx容器指之间通过主机名进行内部通讯
    • 四. redis集群容器(跳过宿主机)内部网络通讯
      • 1. 集群描述
      • 2. 基于bitnami镜像的环境变量快速构建redis集群

一. 默认网络:docker0网络的问题

容器启动时,docker0会给容器分配一个ip,同一宿主机下其他容器可以通过此< ip:容器内部端口>,来访问此容器。

但是当容器重启时,ip就变化了,因为docker0不支持通过容器主机名来访问,所以再次访问时还需要手动查找,维护性很差,生产环境不可用。

相关知识:

  • Docker0 网卡是 Docker 默认的桥接网络模式的一部分。在这种模式下,容器可以相互通信,并且可以通过 Docker0 网卡与外部网络通信。
  • 当一个新的 Docker 容器被创建时,Docker 会自动为该容器创建一对虚拟网络接口(veth pair),并将其中一个连接到 Docker0 网卡上,另一个分配给容器内部的网络命名空间。
  • 在默认情况下,Docker 容器会连接到一个名为 docker0 的虚拟以太网桥。容器通过这个桥接网络接口访问外部网络。容器的网络命名空间中的虚拟网络接口(veth pair)的一端连接到 docker0 ,另一端连接到容器内部。当容器尝试访问外部网络时,数据包会通过 docker0 被转发到宿主机的网络接口,然后发送到外部网络。
  • 桥接模式是如何访问接口的:ing

 

二. 自定义网络

通过自定义网络:
创建自定义网络,容器名就是稳定域名。

# 创建自定义网络
docker network create gao--network gao

 

三. nginx容器指之间通过主机名进行内部通讯

# 创建两个容器
docker run -d -p 8819:80 --name app-nginx-1 --network gao nginx 
docker run -d -p 8820:80 --name app-nginx-2 --network gao nginx # 进入到app-nginx-2 访问app-nginx-1的ngnix
docker exec -it app-nginx-2 bash root@9580927c07a8:/# curl http://app-nginx-1:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
。。。

 

四. redis集群容器(跳过宿主机)内部网络通讯

1. 集群描述

![[Pasted image 20241104151525.png]]

 

2. 基于bitnami镜像的环境变量快速构建redis集群

  1. 基于bitnami 的redis搭建集群:https://hub.docker.com/r/bitnami/redis

  2. 利用bitnami创建的redis集群,不需要写配置文件,只需要根据文档设置好环境变量就行
    ![[Pasted image 20241108171353.png]]

创建网络,以及redis主从集群

docker network create redis-netdocker run -d -p 6379:6379 \
-v /Users/lianggao/MyWorkSpace/001-360/002-docker-demo/redis/redis01:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=master \
-e REDIS_PASSWORD=123456 \
--network redis-net --name redis01 \
bitnami/redis# slave配置master的信息,看到master主机名就是容器名
docker run -d -p 6380:6379 \
-v /Users/lianggao/MyWorkSpace/001-360/002-docker-demo/redis/redis02:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=slave \
-e REDIS_MASTER_HOST=redis01 \
-e REDIS_MASTER_PORT_NUMBER=6379 \
-e REDIS_MASTER_PASSWORD=123456 \
-e REDIS_PASSWORD=123456 \
--network redis-net --name redis02 \
bitnami/redis

 

客户端连接:

客户端下载地址:https://github.com/qishibo/AnotherRedisDesktopManager

ip和地址配置宿主机的

![[Pasted image 20241108170859.png]]

测试:

![[Pasted image 20241108170136.png]]
看到master添加了key,slave也同步了。

 

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

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

相关文章

鸿蒙开发:ArkUI Toggle 组件

ArkUI提供了一套完整的UI开发工具集&#xff0c;帮助开发者高效完成页面的开发。它融合了语言、编译器、图形构建等关键的应用UI开发底座&#xff0c;为应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能以及实时界面预览工具等&#xff0c;可以支持…

CTF —— 网络安全大赛

前言 &#x1f4bb;随着大数据、人工智能的发展&#xff0c;人们步入了新的时代&#xff0c;逐渐走上科技的巅峰。 ⚔科技是一把双刃剑&#xff0c;网络安全不容忽视&#xff0c;人们的隐私在大数据面前暴露无遗&#xff0c;账户被盗、资金损失、网络诈骗、隐私泄露&#xff…

数据分析-43-时间序列预测之深度学习方法GRU

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 GRU2.1 模拟数据2.2 数据归一化2.3 生成滞后特征2.4 切分训练集和测试集2.5 模型训练2.6 模型预测3 参…

aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?

背景 近期各个大厂已经开始准备aosp15的系统rom适配工作了&#xff0c;应该是想2025年初开发发布相关的新机型&#xff0c;所以慢慢的我们也要开始适应aosp15版本的相关问题的修改和研究哈。 近期就有相关学员朋友在做android15相关的dialog开发时候&#xff0c;发现了一个严…

[论文阅读]Enhanced Membership Inference Attacks against Machine Learning Models

Enhanced Membership Inference Attacks against Machine Learning Models 针对机器学习模型的增强型成员推理攻击 Enhanced Membership Inference Attacks against Machine Learning Models | Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communication…

【架构论文-2】架构设计中存在的问题和改进方向

一、性能优化相关 当前情况 在高负载情况下&#xff0c;系统的响应时间出现了一定程度的延迟。特别是在业务高峰期&#xff0c;大量并发请求导致部分关键业务模块的处理效率降低&#xff0c;影响了用户体验。改进方向 计划引入性能分析工具对系统进行全面的性能剖析&#xff0…

嵌入式硬件电子电路设计(三)电源电路之负电源

引言&#xff1a;在对信号线性度放大要求非常高的应用需要使用双电源运放&#xff0c;比如高精度测量仪器、仪表等;那么就需要给双电源运放提供正负电源。 目录 负电源电路原理 负电源的作用 如何产生负电源 负电源能作功吗&#xff1f; 地的理解 负电压产生电路 BUCK电…

GB/T 28046.4-2011 道路车辆 电气及电子设备的环境条件和试验 第4部分:气候负荷(6)

写在前面 本系列文章主要讲解道路车辆电气及电子设备的环境条件和试验GB/T 28046标准的相关知识,希望能帮助更多的同学认识和了解GB/T 28046标准。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 第4部分:气候负荷 5. 试验和要求 5.8 流动混合气体腐蚀试验 5.8.1 目的…

QT中 update()函数无法实时调用 paintEvent

QT中 update()函数无法实时调用 paintEvent&#xff01; 在QT中&#xff0c;update()函数用于标记一个窗口区域为“需要重绘”。当调用update()后&#xff0c;QT会在合适的时候调用paintEvent()来重绘这个区域。然而&#xff0c;update()不会立即调用paintEvent()&#xff0c;…

测试概念以及测试bug

关于测试的概念 什么是需求&#xff1f; 需求分为用户需求和软件需求。 软件需求可以作为开发和测试工作的依据&#xff0c;而用户需求不一定是合理的&#xff0c;这里的不合理有很多的角度&#xff1a;技术角度上&#xff0c;市场需求上&#xff0c;投入成本和收益比噔噔。…

Jenkins配置步骤

安装 Jenkins 1. 安装 Java Jenkins 需要 Java 运行环境。你可以安装 OpenJDK 或 Oracle JDK。 使用 OpenJDK: sudo apt update sudo apt install openjdk-11-jdk验证 Java 安装: java -version2. 安装 Jenkins 添加 Jenkins 仓库: wget -q -O - https://pkg.jenkins.io…

【图论】图的C++实现代码

在这个例程中我们用类实现了节点、&#xff08;无向图&#xff09;连边、无向图&#xff0c;实现了节点度的计算、无向图聚类系数计算、度分布统计、无向图的Dijkstra算法&#xff08;已知起止点计算最短路的算法&#xff09; #include <iostream> #include<vector&g…

Java:二维数组

目录 1. 二维数组的基础格式 1.1 二维数组变量的创建 —— 3种形式 1.2 二维数组的初始化 \1 动态初始化 \2 静态初始化 2. 二维数组的大小 和 内存分配 3. 二维数组的不规则初始化 4. 遍历二维数组 4.1 for循环 ​编辑 4.2 for-each循环 5. 二维数组 与 方法 5.1…

Code::Blocks 24.10 全中文优化完整版

Code::Blocks&#xff08;或者叫做 CodeBlocks&#xff09;是一款开放源代码、跨平台的集成开发环境&#xff08;IDE&#xff09;&#xff0c;通过配置不同的编程语言编译器&#xff0c;可以用于多种编程语言程序开发。 网上有很多文章介绍 Code::Blocks 的安装&#xff0c;通…

分组校验在Spring中的应用详解

目录 前言1. 什么是分组校验2. 分组校验的基本原理3. 分组校验的实现步骤3.1 定义分组接口3.2 在校验项中指定分组3.3 校验时指定要校验的分组3.4 默认分组和分组的继承 4. 分组校验的优势和适用场景4.1 优势4.2 适用场景 5. 常见问题与解决方案5.1 校验未生效5.2 无法识别默认…

优化前端开发中的提示语设计基本原则

文章目录 一致1、同一对象&#xff0c;指称一致2、同一状态&#xff0c;描述一致3、同一行为&#xff0c;提示一致 简洁1、用词简短 条理1、上下呼应2、主次分明 亲和1、化“难”为易2、“礼”字当先3、正向表达 灵动1、用词多变2、远离平淡 契合1、身份契合2、产品契合 示例1、…

C++知识点总结(56):数学专题

数学专题 一、进制转换类1. 模板1.1 十转 x x x1.2 x x x 转十 2. 例题 二、公式推导类1. 一元二次方程解2. 例题2.1 【模板】怪物同笼2.2 K K K 的倍数 三、枚举例题1. 二次方程2. 【模板】立方体体积3. 街头篮球 一、进制转换类 1. 模板 1.1 十转 x x x while(n){num[…

【C++滑动窗口】1297. 子串的最大出现次数|1748

本文涉及的基础知识点 C算法&#xff1a;滑动窗口及双指针总结 固定长度滑动窗口 LeetCode1297. 子串的最大出现次数 给你一个字符串 s &#xff0c;请你返回满足以下条件且出现次数最大的 任意 子串的出现次数&#xff1a; 子串中不同字母的数目必须小于等于 maxLetters 。…

【C++练习】使用海伦公式计算三角形面积

编写并调试一个计算三角形面积的程序 要求&#xff1a; 使用海伦公式&#xff08;Herons Formula&#xff09;来计算三角形的面积。程序需要从用户那里输入三角形的三边长&#xff08;实数类型&#xff09;。输出计算得到的三角形面积&#xff0c;结果保留默认精度。提示用户…

Python使用PDF相关组件案例详解

主要对pdfminer.six、pdfplumber、PyMuPDF、PyPDF2、PyPDF4、pdf2image、camelot-py七个PDF相关组件分别详解&#xff0c;具体使用案例演示 1. pdfminer.six pdfminer.six 是一个专门用来从 PDF 中提取文本的库&#xff0c;能够处理复杂的文本布局&#xff0c;适合用于文本解析…