CentOS中离线安装DockerCompos并用其部署Rabbitmq(使用离线导入导出docker镜像方式)

场景

Docker+DockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBoot+Vue流水线项目过程详解、踩坑记录(附镜像资源、离线包资源下载):

Docker+DockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBoot+Vue流水线项目过程详解、踩坑记录(附镜像资源、离线包资源下载)_jenkins+springboot+docker+docker-compose部署-CSDN博客

参考上面类似的方式实现使用DockerCompose部署Rabbimq。

因服务器无法连接外网,但是已经安装了Docker,所以需要离线安装DockerCompose,

并且先从能通外网的电脑或服务将rabbitmq的docker镜像进行导出,然后将其导入到服务器上。

RabbiMQ

RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。

支持主流的操作系统,Linux、Windows、MacOX等

多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等

AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP 规范发布。

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。Erlang 语言由 Ericson 设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。

其他主流 MQ 产品

ActiveMQ:Apache 出品,最流行的,能力强劲的开源消息总线,基于 JMS(Java Message Service)规范

RocketMQ:阿里低延迟、高并发、高可用、高可靠的分布式消息中间件,基于 JMS,目前由 Apache 基金会维护

Kafka:分布式,分区的,多副本的,多订阅者的消息发布订阅系统(分布式 MQ 系统),可以用于搜索日志,监控日志,访问日志等

RabbitMQ核心架构

AMQP协议模型

组件         作用                                                       类比案例

Producer 消息生产者,通过Exchange路由消息 快递发货方

Exchange 接收消息并根据规则推送到Queue(类型:Direct/Topic/Fanout/Headers) 快递分拣中心

Queue 存储消息的缓冲区(FIFO) 快递暂存仓库

Consumer 消息消费者,通过订阅Queue获取消息 快递收件人

Channel 复用TCP连接的轻量级通信管道(减少资源消耗) 快递运输的子车道

注:

博客:
霸道流氓气质-CSDN博客

实现

CentOS上离线安装DockerCompose

这里假定服务器上已经安装了Docker并且需要安装DockerCompose的2.34.0版本

首先在有网络的机器上下载 Docker Compose 二进制文件

wget https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-linux-x86_64

如果是在windows电脑上,直接访问后面的链接地址下载即可

下载之后将其上传至要安装的服务器,执行如下指令

# 将文件移动到可执行路径
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose# 创建符号链接(可选)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose# 验证安装
docker-compose version

CentOS上使用导出导入docker镜像的方式离线拉取Rabbimq镜像

在服务器上无法访问外网,所以需要在能拉取rabbitmq镜像的服务器上拉取镜像并导出,然后手动上传至

服务器上并导入镜像

有网的机器上拉取rabbitmq镜像

docker pull rabbitmq:3.9-management

拉取完成后然后导出镜像

docker save -o rabbitmq_3.9-management.tar  rabbitmq:3.9-management

导出成功之后将其下载到本地,并上传至不能通外网的服务器上

执行导入命令

docker load -i rabbitmq_3.9-management.tar

导入成功

这里需要注意在导出Docker镜像时tar包的命名格式,如果命名格式有问题,则将其下载到本地时会显示0B大小,无法使用。

CentOS上导出Docker镜像时命名格式要求

关于Docker镜像导出文件命名的详细规范与建议

合法字符集

允许:字母(a-zA-Z)、数字(0-9)、连字符(-)、下划线(_)、点(.)

禁止:空格、/ \ : * ? " < > |等特殊符号(可能被系统解析为路径或通配符)

文件扩展名

建议统一使用.tar作为后缀(Docker标准格式)

若压缩可追加.gz:rabbitmq_3.9-management.tar.gz

CentOS上使用DockerCompose实现部署Rabbitmq

在上面实现服务器上离线安装了DockerCompose以及离线加载Rabbitmq镜像后,在服务器上某目录新建

docker-compose.yml文件,文件内容如下:

version: '3.8'services:rabbitmq:image: rabbitmq:3.9-managementcontainer_name: rabbitmqhostname: my-rabbitports:- "5672:5672"   # AMQP 协议端口- "15672:15672" # 管理界面端口volumes:- ./data:/var/lib/rabbitmq- ./logs:/var/log/rabbitmqenvironment:- RABBITMQ_DEFAULT_USER=svip- RABBITMQ_DEFAULT_PASS=123456- RABBITMQ_DEFAULT_VHOST=/badaorestart: alwayshealthcheck:test: ["CMD", "rabbitmq-diagnostics", "status"]interval: 30stimeout: 10sretries: 5networks:- rabbitmq_netnetworks:rabbitmq_net:driver: bridge

配置文件关键内容详解:

volumes:

作用:挂载数据卷,实现数据持久化

格式:宿主机路径:容器内路径

路径说明:

/var/lib/rabbitmq:RabbitMQ的数据存储目录

/var/log/rabbitmq:RabbitMQ的日志目录

environment:

作用:设置容器环境变量

变量说明:

RABBITMQ_DEFAULT_USER:默认管理员用户名

RABBITMQ_DEFAULT_PASS:默认管理员密码

RABBITMQ_DEFAULT_VHOST:默认虚拟主机

healthcheck:

作用:定义健康检查机制

配置项:

test:检查命令,rabbitmq-diagnostics status返回0表示健康

interval:检查间隔(30秒)

timeout:单次检查超时时间(10秒)

retries:连续失败多少次才判定为不健康

用途:Docker可以根据健康检查结果管理容器

注意上面配置数据卷映射,所以在yml所在目录下新建data目录和logs目录,

并授予这两个目录权限!!!

chmod 777 -R ./datachmod 777 -R ./logs

如果不授权直接启动,则启动失败,可以查看日志提示权限问题:

docker-compose logs -f rabbitmq

如果先是启动过再授予的权限,要先将data目录删掉重新建立并重新授权之后再启动。

否则会提示:

Application rabbitmq_prelaunch exited with reason: {{shutdown,{failed_to_start_child,prelaunch,{badmatch,{error,{{shutdown,{failed_to_start_child,auth,{"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only",[{auth,init_no_setcookie,0,[{file,"auth.erl"},{line,313}]},{auth,init,1,[{file,"auth.erl"},{line,165}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,851}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,814}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}}},{child,undefined,net_sup_dynamic,{erl_distribution,start_link,[#{clean_halt => false,name => rabbit_prelaunch_19@localhost,name_domain => shortnames,net_tickintensity => 4,net_ticktime => 60,supervisor => net_sup_dynamic}]},permanent,false,1000,supervisor,[erl_distribution]}}}}}},{rabbit_prelaunch_app,start,[normal,[]]}}

这个错误表明 RabbitMQ 启动失败,原因是 .erlang.cookie 文件的权限设置不正确。

启动 RabbitMQ 服务

# 启动服务
docker-compose up -d# 查看运行状态
docker-compose ps# 查看日志
docker-compose logs -f rabbitmq

此时访问服务器的15672端口,使用上面配置的用户名密码登录即可。

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

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

相关文章

stm32week11

stm32学习 八.stm32基础 2.stm32内核和芯片 F1系统架构&#xff1a;4个主动单元和4个被动单元 AHB是内核高性能总线&#xff0c;APB是外围总线 总线矩阵将总线和各个主动被动单元连到一起 ICode总线直接连接Flash接口&#xff0c;不需要经过总线矩阵 AHB&#xff1a;72MHz&am…

贪心算法:部分背包问题深度解析

简介&#xff1a; 该Java代码基于贪心算法实现了分数背包问题的求解&#xff0c;核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序&#xff0c;按wm(价值/重量比)从高到低重新排列物品&#xff1b;随后分两阶段装入&#xff1a;循环…

13. Langchain异步处理:提升应用性能的关键技巧

引言&#xff1a;从"顺序等待"到"并行加速" 2025年某电商平台引入LangChain异步处理后&#xff0c;大促期间订单处理能力提升5倍&#xff0c;系统响应延迟降低70%。本文将基于LangChain的异步架构&#xff0c;详解如何通过并行执行流式处理&#xff0c;让…

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

文章目录 前言&#xff08;Introduction&#xff09;搭建开发环境&#xff08;Setup Development Environment&#xff09;在window中安装Unity&#xff08;Install Unity in window&#xff09;创建Docker容器&#xff0c;并安装相关软件&#xff08;Create Docker containers…

计算机组成原理笔记(十四)——3.4指令类型

一台计算机的指令系统可以有上百条指令&#xff0c;这些指令按其功能可以分成几种类型&#xff0c;下面分别介绍。 3.4.1数据传送类指令 一、核心概念与功能定位 数据传送类指令是计算机指令系统中最基础的指令类型&#xff0c;负责在 寄存器、主存、I/O设备 之间高效复制数…

各开源协议一览

在 GitHub 上&#xff0c;开源项目通常会使用一些常见的开源协议来定义项目的使用、修改和分发规则。以下是目前 GitHub 上最常见的几种开源协议及其差异和示例说明&#xff1a; TL;DR 协议宽松程度是否强制开源专利保护适用场景MIT最宽松否无希望代码被广泛使用Apache 2.0宽松…

51c自动驾驶~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13793157 #汇聚感知、定位、规划控制的自动驾驶系统 自动驾驶技术在应用到车辆上之后可以通过提高吞吐量来缓解道路拥堵&#xff0c;通过消除人为错误来提高道路安全性&#xff0c;并减轻驾驶员的驾驶负担&#xff0c;从…

小程序开发指南

小程序开发指南 目录 1. 小程序开发概述 1.1 什么是小程序1.2 小程序的优势1.3 小程序的发展历程 2. 开发准备工作 2.1 选择开发平台2.2 开发环境搭建2.3 开发模式选择 3. 小程序开发流程 3.1 项目规划3.2 界面设计3.3 代码开发3.4 基本开发示例3.5 数据存储3.6 网络请求3.7 …

Day15:关于MySQL的编程技术——基础知识

前言&#xff1a;先创建一个练习的数据库和数据 1.创建数据库并创建数据表的基本结构 -- 创建练习数据库 CREATE DATABASE db_programming; USE db_programming;-- 创建员工表&#xff08;包含各种数据类型&#xff09; CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…

批处理脚本bat丨遍历一个包含项目名称的数组,并对每个文件中的项目执行 git pull 操作 (一键拉很多文件的代码)

文章目录 前言一、操作方式二、文件展示三、分析代码结构四、代码五、需要注意的潜在问题六、改进后的代码七、改进说明八、感谢 前言 由于之前git服务部署在本地服务器&#xff0c;处于代码安全角度考虑。领导让我将所有的项目代码手动物理备份一份并且发给他。 这种傻傻的操…

【C++】C与C++、C++内存空间、堆与栈

C嘎嘎嘎嘎嘎~ C与C的区别与联系 C内存空间 int global_var; // 未初始化全局变量&#xff0c;BSS段 const char* str "Hello"; // 字符串常量text段 in数据段void func() {static int static_var; // 未初始化的静态变量&#xff0c;数据段int local_var; …

舵机:机器人领域的“关节革命者”

机器人的技术&#xff0c;每一个细微的进步都可能引领一场行业变革。而在这场变革中&#xff0c;舵机作为机器人关节的核心部件&#xff0c;正悄然上演着一场革命性的应用风暴。从简单的关节运动到复杂的姿态控制&#xff0c;舵机以其卓越的性能和无限的可能&#xff0c;重新定…

微前端的不断探索之路—— qiankun 实战与思考!

全文目录&#xff1a; 开篇语&#x1f4dd; 前言&#x1f6e0;️ 微前端是什么&#xff1f;为什么需要它&#xff1f;&#x1f4a1; 先从“前端痛点”说起&#x1f9d0; 微前端的优势 &#x1f939;‍♀️ qiankun 简介与核心概念&#x1f31f; 为什么选择 qiankun&#xff1f;…

拆解加密黑盒

在Web安全与数据爬取领域&#xff0c;JavaScript加密黑盒的逆向工程是核心技术之一。本文基于行业通用方法论与实战案例&#xff0c;提炼出一套标准化的五步逆向流程&#xff0c;涵盖目标定位、代码提取、逻辑分析、算法复现到自动化集成的全链路解决方案&#xff0c;帮助开发者…

IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程

随着人工智能技术的发展&#xff0c;AI 编程助手逐渐成为提升开发效率的强大工具。通义灵码是阿里云推出的一款 AI 编程助手&#xff0c;它能够帮助开发者实现智能代码补全、代码解释、生成单元测试等功能&#xff0c;极大地提升了编程效率和代码质量。 IntelliJ IDEA 是一款广…

Redis 特性和应用场景

1. Redis特性 1&#xff09;In-memory data structures Redis 在内存中存储数据&#xff0c;key 是 String&#xff0c; value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通过 “表” 的方式来存储组织数据的 “关系型数据库” Redis主要是通过 “键值对”…

每天五分钟深度学习:非线性激活函数的导数

本文重点 本文探讨了神经网络中几种常见非线性激活函数(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的导数特性。通过对各激活函数导数的数学推导与实际应用分析,揭示了不同激活函数在梯度传播、收敛速度及模型表达能力方面的差异。研究发现,ReLU及其变体在计算效率与…

redis哨兵机制 和集群有什么区别:

主从&#xff1a; 包括一个master节点 和多个slave节点&#xff1a; master节点负责数据的读写&#xff0c;slave节点负责数据的读取&#xff0c;master节点收到数据变更&#xff0c;会同步到slave节点 去实现数据的同步。通过这样一个架构可以去实现redis的一个读写分离。提升…

关于读完《毛泽东选集》的一些思考迭代

看完毛选前四卷&#xff0c;从革命初期一直讲到抗战胜利&#xff0c;共75.8W字&#xff0c;花费67个小时读完。从1925年发表的“中国社会各阶级的分析”&#xff0c;跨越100年&#xff0c;通过67个小时向主席学习到&#xff1a; 实事求是 从实践中来再到实践中去 用辩证与发展…

MySQL——MVCC(多版本并发控制)

目录 1.MVCC多版本并发控制的一些基本概念 MVCC实现原理 记录中的隐藏字段 undo log undo log 版本链 ReadView 数据访问规则 具体实现逻辑 总结 1.MVCC多版本并发控制的一些基本概念 当前读&#xff1a;该取的是记录的最新版本&#xff0c;读取时还要保证其他并发事务…