1.簡介

在來學習RabbitMQ時候,我覺得很有必要先把它的環境先搭建起來,這樣後面的示例才能進行。因為之前自己手動在Linux伺服器上搭建過Elasticsearch,當時踩過太多坑了,浪費太多時間在這事情上,後面發現在Docker上安裝部署方便快捷,不需要額外安裝Erlang,所以寫該篇文章先來介紹如何在Docker上部署RabbitMQ。

2. 安裝Docker Engine-Community

使用Docker倉庫進行安裝,在新主機上首次安裝Docker Engine-Community之前,需要設定Docker倉庫。之後,您可以從倉庫安裝和更新Docker。

2.1設定倉庫

安裝所需的軟體包。yum-utils提供了yum-config-manager,並且device mapper儲存驅動程式需要device-mapper-persistent-data和lvm2。

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

or

sudo yum install -y yum-utils device-mapper-persistent-data lvm2


使用以下命令來設定穩定的倉庫(一般不建議使用官方源地址,因為訪問國外的站點比較慢,最好訪問國內的源地址,例如阿里雲):

$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

or

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2安裝Docker Engine-Community

安裝最新版本的Docker Engine-Community和containerd,或者轉到下一步安裝特定版本:

sudo yum install docker-ce docker-ce-cli containerd.io

2.3檢視Docker版本

docker version


檢視Docker版本時候,發覺Docker並沒有啟動,所以接下來要啟動Docker。

2.4啟動Docker

systemctl start docker

2.5通過執行hello-world映像來驗證是否正確安裝了Docker Engine-Community(當執行容器時,使用的映象如果在本地中不存在,就會自動從docker映象倉庫中下載,預設是從Docker Hub公共映象源下載)

docker run hello-world

2.6檢視映象

docker images


由此可見,docker下載安裝成功!

3. Docker安裝RabbitMQ

可以自行進入docker hub映象倉庫地址(https://hub.docker.com)檢視rabbitmq型別的映象。

3.1拉取rabbitmq映象

docker pull rabbitmq

3.2檢視映象

拉取rabbitmq映象成功!

3.3啟動RabbitMQ Web介面

docker restart rabbitmq(REPOSITORY,容器名稱)
docker restart 76615d52df27(CONTAINER ID,容器ID)

設定rabbitmq使用者名稱和密碼並啟動主要有兩種方式:
●預設guest 使用者,密碼guest:

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

●設定新使用者名稱和密碼:

docker run -d --hostname my-rabbit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=qwer1234 -p 15672:15672 -p 5672:5672 rabbitmq:management

-d:後臺執行容器。
--name:指定容器名。
-p:指定服務執行的埠(5672:應用訪問埠;15672:控制檯Web埠號)。
-v:對映目錄或檔案。
--hostname:主機名(RabbitMQ的一個重要注意事項是它根據所謂的“節點名稱”儲存資料,預設為主機名)。
-e:指定環境變數(RABBITMQ_DEFAULT_VHOST:預設虛擬機器名;RABBITMQ_DEFAULT_USER:預設的使用者名稱;RABBITMQ_DEFAULT_PASS:預設使用者名稱的密碼)。

●啟動rabbitmq_management指令碼命令如下:

docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management


 注意:rabbitmq為映象名稱。

3.4開啟防火牆15672埠

firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
--檢視是否開通訪問許可權
firewall-cmd --permanent --zone=public --query-port=15672/tcp

注:如果是阿里雲等伺服器,則需要配置RabbitMQ安全組策略
登入阿里雲->安全組規則->訪問規則->入方向->手動新增如下策略:

3.5檢視正在執行容器

docker ps -a

3.6 rabbitmqctl使用者命令使用

當你使用rabbitmqctl使用者命令時有如下提示:

rabbitmqctl: command not found

則是因為rabbitmqctl沒有進行軟連線,需要進入到rabbitmqctl的sbin目錄下執行rabbitmqctl命令才有用。假設我要修改admin使用者密碼,需要找到rabbitmqctl的sbin目錄並切換才能執行命令,如果不清楚目錄在哪裡,可以通過find命令查詢:

find / -name "rabbitmqctl*"

3.6.1使用者相關命令

●檢視使用者列表

rabbitmqctl list_users

●增加使用者

rabbitmqctl add_user username 'password'

●設定角色

rabbitmqctl set_user_tags username administrator

●修改使用者密碼

rabbitmqctl change_password username 'newpasswd'

●刪除使用者

rabbitmqctl delete_user username

●使用者賦權(使使用者user1具有vhost1這個virtual host中所有資源的配置、寫、讀許可權以便管理其中的資源)

rabbitmqctl set_permissions -p vhost1 username '.*' '.*' '.*'

●檢視許可權

rabbitmqctl list_user_permissions username

●檢視vhost1中許可權

rabbitmqctl list_permissions -p vhost1

●清除許可權

rabbitmqctl clear_permissions [-p VHostPath] username

3.6 Docker重啟RabbitMQ
●檢視正在執行容器:

docker ps -a

●停止執行rabbitmq容器:

docker stop 9f1fb347efc2 (CONTAINER ID)

●刪除rabbitmq容器:

docker rm 9f1fb347efc2(CONTAINER ID)

●再執行3.3小節rabbitmq啟動命令

3.7安裝成功



參考文獻:
CentOS Docker安裝
Docker映象使用
Docker容器使用
Docker容器連線