0%

CentOS 7 下使用 Docker 部署 RabbitMQ

之前的文章介绍了在 Linux 中直接部署服务 (Redis, MySQL),其中部署过程十分繁琐,经过高人指点,可以使用 Docker 技术实现快速部署。故本文介绍如何在 CentOS 7 环境下通过 Docker 技术快速部署消息中间件 RabbitMQ 消息队列服务

安装 Docker

卸载旧版本

Docker 较旧的版本称为 docker 或 docker-engine,如果已安装,需要先卸载它们及相关依赖项

1
2
3
4
5
6
7
8
9
10
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

使用 Docker 仓库安装

1. 安装相关依赖包

yum-utils 提供了 yum-config-manager ,而 device mapper 存储驱动程序则需要 device-mapper-persistent-data 和 lvm2

1
2
3
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

2. 添加 Docker 仓库

1
2
3
4

yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

通过 yum repolist 命令查看 Docker 仓库是否被成功添加

3. 安装 Docker

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

通过 docker —version 命令查看 Docker 是否被成功安装

4. 添加当前账号到 docker 用户组

默认情况下,只有 root 用户和 docker 用户组中的用户可以操作 Docker,其他用户操作需要使用 sudo 命令提权,十分麻烦。为此我们可以将相关用户添加到 docker 用户组即可

1
usermod -aG docker zgh     # 添加zgh用户到docker用户组中    

通过 groups zgh 命令查看 zgh 用户是否被成功添加到 docker 用户组

退出注销 zgh 用户并重新登录,以使对组的更改生效

启动 Docker

1. 配置 Docker 开机自启

1
2
systemctl enable docker
systemctl start docker

2. 验证 Docker 是否正确安装

使用 docker run 启动一个测试镜像 hello-world 的容器,如果本地无指定镜像,则该命令会自动先将镜像从仓库中下载到本地

1
docker run hello-world

下图所示结果说明,则说明 Docker 已经被正确安装,且 hello-world 容器被成功启动

部署 RabbitMQ

1. 搜索镜像

在 Docker Hub https://hub.docker.com 中搜索 RabbitMQ 镜像,直接进入 Official 官方镜像。由于我们需要 Web 管理页面,所以选择带有 management 字样的 Tag

2. 下载镜像

从 Docker 仓库中拉取镜像下载到本地,Tag 可省略,则默认使用 latest

1
2
docker pull [imagename]:[tag]
docker pull rabbitmq:3.8.2-management

下载完成后,查看本地镜像,可以看到所需的 RabbitMQ 已经拉取到本地了

1
docker images

3. 启动 rabbitMQ 容器

由于是第一次,所以我们需要使用 docker run 命令创建启动一个新的 rabbitMQ 容器

1
2
3
4
# 仅对外开放 Web管理页面端口15672
docker run -d --hostname rabbitMQ --name my-rabbitMQ -p 45672:15672 rabbitmq:3.8.2-management
# 开放 Web管理页面端口15672、程序通讯端口5672
docker run -d --hostname rabbitMQ --name my-rabbitMQ -p 45672:15672 -p 35672:5672 rabbitmq:3.8.2-management
  • -d : 后台模式运行容器,并返回容器 ID (Container ID)
  • —hostname [hostname] : 指定容器的主机名
  • —name [name] : 指定容器的名称
  • -p [hostPort]:[containerPort]: 指定宿主机端口 (host port) 和 容器端口 (container port) 的映射

RabbitMQ 的 Web 管理插件 management plugin 使用容器的 15672 端口,为了支持从外部网络访问该 Web 管理页面,需要将本地宿主机端口映射到该容器的 15672 端口,这里是将服务器本地的 45672 端口映射到容器的 15672 端口。这样即可通过 http://[serverIp]:45672 来访问 RabbitMQ 容器的 Web 管理页面。缺省用户名、密码均为 guest。RabbitMQ 和程序通讯端口 5672 同理

[Note]:
上图的执行结果是仅对外开放了 RabbitMQ 的 Web 管理页面的 15672 端口,实际开放应用中还需要对外开放 RabbitMQ 和程序通讯的 5672 端口

Docker 常用命令

1. 查看容器状态

查看当前正在运行的容器信息,包括容器 ID (container port),镜像名,容器名,端口信息,状态等

1
docker ps

可用参数:

  • -a : 显示所有容器 (默认显示最近曾经运行过的)
  • -n [num] : 显示最近创建过的 num 个容器
  • -q : 只显示容器 ID

从下图测试结果也可以看出 名为 my-rabbitMQ 容器的 Port 信息中有服务器本地 45672 端口到该容器 15672 端口的映射

2. 查看容器的端口映射

查看指定容器的端口映射情况

1
docker port [containerID | containerName]

测试结果如下

3. 容器的启动 / 停止 / 重启

1
2
3
4
5
6
# 启动指定容器 
docker start [containerID | containerName]
# 停止指定容器
docker stop [containerID | containerName]
# 重启指定容器
docker restart [containerID | containerName]

测试结果如下

4. 删除容器

1
2
# 删除指定容器
docker rm [containerID | containerName]

可用参数:

  • -f : 强制删除
请我喝杯咖啡捏~

欢迎关注我的微信公众号:青灯抽丝

Powered By Valine
v1.5.2