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.pswp.cn/pingmian/76664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76664.shtml
英文地址,請注明出處:http://en.pswp.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;讀取時還要保證其他并發事務…