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

【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也同步了。

 

相关文章:

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

文章目录 一. 默认网络&#xff1a;docker0网络的问题二. 自定义网络三. nginx容器指之间通过主机名进行内部通讯四. redis集群容器&#xff08;跳过宿主机&#xff09;内部网络通讯1. 集群描述2. 基于bitnami镜像的环境变量快速构建redis集群 一. 默认网络&#xff1a;docker0…...

护理陪护系统|护理陪护软件|陪护软件

在当今社会&#xff0c;随着人口老龄化的加剧和生活节奏的加快&#xff0c;护理陪护服务的需求日益增长。为了满足这一需求&#xff0c;开发定制一套高效、专业的护理陪护系统显得尤为重要。在开发过程中&#xff0c;有几个关键方面不能忽视。 一、用户需求分析 护理陪护系统的…...

苍穹外卖-账号被锁定怎么办?

刚刚解决的小问题, 最近在搞黑马程序员的苍穹外卖项目, 在完善开发编辑员工功能的时候, 不知道怎么搞的, 无论是swagger接口测试, 还是前后端联调, 都显示"账号被锁定", 原本想在网上找找解释, 结果我太笨, 搜不到, 那就只能在代码里面排查咯, 既然是登录接口出…...

webpack loader全解析,从入门到精通(10)

webpack 的核心功能是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定的文件中。更多复杂的功能需要借助 webpack loaders 和 plugins 来完成。 1. 什么是 Loader Loader 本质上是一个函数&#xff0c;它的作用是将某个源码字符串转换成…...

python机器人Agent编程——实现一个本地大模型和爬虫结合的手机号归属地天气查询Agent

目录 一、前言二、准备工作三、Agent结构四、python模块实现4.1 实现手机号归属地查询工具4.2实现天气查询工具4.3定义创建Agent主体4.4创建聊天界面 五、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源ps3.wifi小车控制相关…...

【动态规划】斐波那契数列模型总结

一、第 N 个泰波那契数 题目链接&#xff1a; 第 N 个泰波那契数 题目描述&#xff1a; 题目分析&#xff1a; 1、状态表示&#xff1a; dp[i] 表示&#xff1a;第 i 个斐波那契数的值 2、状态转移方程&#xff1a; 由题意可知第 i 个数等于其前三个数之和 dp[i] dp[i-…...

EasyUI弹出框行编辑,通过下拉框实现内容联动

EasyUI弹出框行编辑&#xff0c;通过下拉框实现内容联动 需求 实现用户支付方式配置&#xff0c;当弹出框加载出来的时候&#xff0c;显示用户现有的支付方式&#xff0c;datagrid的第一列为conbobox,下来选择之后实现后面的数据直接填充&#xff1b; 点击新增&#xff1a;新…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现word文件在线留痕

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;LoogArch&#xff09;芯片架构。 查看本示例演示效果 …...

使用亚马逊 S3 连接器为 PyTorch 和 MinIO 创建地图式数据集

在深入研究 Amazon 的 PyTorch S3 连接器之前&#xff0c;有必要介绍一下它要解决的问题。许多 AI 模型需要使用无法放入内存的数据进行训练。此外&#xff0c;许多为计算机视觉和生成式 AI 构建的真正有趣的模型使用的数据甚至无法容纳在单个服务器附带的磁盘驱动器上。解决存…...

自动化运维:提升效率与稳定性的关键技术实践

自动化运维&#xff1a;提升效率与稳定性的关键技术实践 在数字化转型的浪潮中&#xff0c;企业对于IT系统的依赖日益加深&#xff0c;系统的复杂性和规模也随之膨胀。面对这一挑战&#xff0c;传统的运维模式——依靠人工进行服务器的监控、配置变更、故障排查等任务&#xf…...

Google Go编程风格指南-介绍

关于 首先应该明确的是&#xff1a;Go语言是Google搞出来的&#xff0c;这个编程风格指南也是它提出来的&#xff0c;详见&#xff1a;https://google.github.io/styleguide/go/。 然后国内翻译组跟上&#xff0c;于是有了中文版&#xff1a;https://gocn.github.io/stylegui…...

思科模拟器路由器配置实验

一、实验目的 了解路由器的作用。掌握路由器的基本配置方法。掌握路由器模块的使用和互连方式。 二、实验环境 设备&#xff1a; 2811 路由器 1 台计算机 2 台Console 配置线 1 根网线若干根 拓扑图&#xff1a;实验拓扑图如图 8-1 所示。计算机 IP 地址规划&#xff1a;如表…...

机器学习—选择激活函数

可以为神经网络中的不同神经元选择激活函数&#xff0c;我们将从如何为输出层选择它的一些指导开始&#xff0c;事实证明&#xff0c;取决于目标标签或地面真相标签y是什么&#xff0c;对于输出层的激活函数&#xff0c;将有一个相当自然的选择&#xff0c;然后看看激活函数的选…...

[ Linux 命令基础 4 ] Linux 命令详解-文本处理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

Odoo:免费开源的钢铁冶金行业ERP管理系统

文 / 开源智造 Odoo亚太金牌服务 简介 Odoo免费开源ERP集成计质量设备大宗原料采购&#xff0c;备件设材全生命周期&#xff0c;多业务模式货控销售&#xff0c;全要素追溯单品&#xff0c;无人值守计量物流&#xff0c;大宗贸易交易和精细化成本管理等方案&#xff1b;覆盖…...

33.Redis多线程

1.Redis队列与Stream Redis5.0 最大的新特性就是多出了一个数据结构 Stream&#xff0c;它是一个新的强大的支持多播的可持久化的消息队列。 Redis Stream 的结构如上图所示,每一个Stream都有一个消息链表&#xff0c;将所有加入的消息都串起来&#xff0c;每个消息都有一个唯…...

【Python】解析 XML

1、Python 对 XML 的解析 1.1 SAX (simple API for XML ) SAX 解析器使用事件驱动模型&#xff0c;通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。 xml.sax 模块牺牲了便捷性来换取速度和内存占用。 事件驱动指一种基于回调&#xff08;ca…...

【复平面】-复数相乘的几何性质

文章目录 从数学上证明1. 计算乘积 z 1 ⋅ z 2 z_1 \cdot z_2 z1​⋅z2​2. 应用三角恒等式3. 得出结果 从几何角度证明1.给出待乘的复数 u i u_i ui​2.给出任意复数 l l l3.复数 l l l 在不同坐标轴下的表示图 首先说结论&#xff1a; 在复平面中&#xff0c;两个复数&a…...

为什么ta【给脸不要脸】:利他是一种选择,善良者的自我救赎与智慧策略

你满腔热忱&#xff0c;他却视而不见&#xff1b; 你伸出援手&#xff0c;他却恩将仇报&#xff1b; 你谦让包容&#xff0c;他却得寸进尺&#xff1b; 你善意提拔&#xff0c;他却并不领情&#xff0c;反而“给脸不要脸”。 所有人都曾被这种“好心当成驴肝肺”遭遇内耗&a…...

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因&#xff1a;在MySQL8.0之后的版本&#xff0c;只允许在数据库初始化时指定&#xff0c;之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息&#xff1a;Job for mysqld.service failed because the control process exited …...

OpenAPI规范自动生成CLI工具:原理、实现与工程实践

1. 项目概述&#xff1a;从API文档到命令行工具的自动化革命如果你是一名后端开发者&#xff0c;或者经常需要与各种RESTful API打交道&#xff0c;那么下面这个场景你一定不陌生&#xff1a;产品经理或前端同事跑过来&#xff0c;递给你一份新鲜出炉的OpenAPI/Swagger规范文档…...

Mac上如何用DistroAV插件实现无线多机位直播:NDI技术完整指南

Mac上如何用DistroAV插件实现无线多机位直播&#xff1a;NDI技术完整指南 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 还在为Mac上的OBS直播设置烦恼吗&#xff1f;想…...

从手忙脚乱到智能掌控:League-Toolkit如何解决你的英雄联盟痛点

从手忙脚乱到智能掌控&#xff1a;League-Toolkit如何解决你的英雄联盟痛点 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾经在极地大…...

模块化IC设计流程:应对复杂芯片挑战的解决方案

1. 现代IC设计面临的挑战与模块化流程的价值在当今半导体行业&#xff0c;芯片设计团队正面临前所未有的复杂挑战。随着工艺节点不断演进至5nm及以下&#xff0c;设计复杂度呈指数级增长。我曾参与的一个65nm SoC项目&#xff0c;团队最初采用传统线性设计流程&#xff0c;结果…...

别再只用memcpy了!手把手教你用memcpy_s写出更安全的C语言代码(附VS2022实战)

从memcpy到memcpy_s&#xff1a;现代C语言安全编程实战指南 在Visual Studio 2022的编译输出窗口中&#xff0c;那个刺眼的C4996警告已经成为许多C语言开发者的"老朋友"。当看到"error C4996: memcpy: This function or variable may be unsafe"时&#xf…...

YOLOv5锚框(anchor)自适应计算与实战调优指南

1. 为什么需要自定义YOLOv5锚框参数 第一次用YOLOv5跑自己的数据集时&#xff0c;我发现模型死活训不出好效果。明明用的是官方预训练权重&#xff0c;标注数据也检查过没问题&#xff0c;但AP值就是上不去。后来把预测结果可视化出来才发现问题——那些长条形物体&#xff08;…...

5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验

5大核心功能揭秘&#xff1a;GTA5线上小助手如何彻底改变你的洛圣都冒险体验 【免费下载链接】GTA5OnlineTools GTA5线上小助手 项目地址: https://gitcode.com/gh_mirrors/gt/GTA5OnlineTools 你是否厌倦了在GTA5线上模式中花费数小时完成重复任务&#xff1f;是否希望…...

Vivado时序约束实战:输入/输出延时设置背后的时序模型与设计考量

1. 时序约束的本质&#xff1a;从理论到实践的桥梁 刚接触FPGA设计时&#xff0c;我最头疼的就是时序约束。那些建立时间、保持时间的概念看得人云里雾里&#xff0c;更别说要在Vivado里实际设置了。直到有一次项目因为时序问题导致整板无法工作&#xff0c;我才真正明白时序约…...

后端开发必看:设计高并发系统时,如何估算你的RTT和时延带宽积?

高并发系统设计实战&#xff1a;从RTT到时延带宽积的性能优化指南 在分布式系统的世界里&#xff0c;网络性能指标往往成为制约整体吞吐量的隐形瓶颈。我曾亲眼见证过一个日活百万的社交平台&#xff0c;因为微服务间调用的RTT估算偏差&#xff0c;导致高峰期请求堆积如山的惨状…...

用Yii2快速构建微服务RESTful API全攻略

...