以下是一个详细的指导文档,帮助您在 Ubuntu 22.04 上完成以下任务:

  1. 安装 Docker 环境
  2. 运行 RocketMQ 的 Docker 实例
  3. 如何访问 RocketMQ 服务

1. 安装 Docker 环境

1.1 更新系统软件包

首先更新系统软件包以确保安装最新的依赖:

sudo apt update
sudo apt upgrade -y

1.2 安装必要的依赖

安装 Docker 所需的依赖:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

1.3 添加 Docker 官方 GPG 密钥和源

添加 Docker 的 GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 官方的 APT 软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

1.4 安装 Docker CE

更新软件包缓存并安装 Docker:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

1.5 验证 Docker 安装

运行以下命令以确保 Docker 已正确安装:

sudo docker --version

输出类似于以下内容即表示安装成功:

Docker version 24.0.2, build abcdefg123

1.6 设置非 root 用户使用 Docker

将当前用户添加到 docker 用户组以避免每次使用 Docker 都需要 sudo

sudo usermod -aG docker $USER

退出并重新登录终端,以使组更改生效。验证是否可以正常运行:

docker run hello-world


2. 运行 RocketMQ 的 Docker 实例

RocketMQ 提供了官方的 Docker 镜像,您可以通过以下步骤快速启动。

2.1 创建 Docker 网络(可选)

为 RocketMQ 创建一个自定义 Docker 网络(便于容器间通信):

docker network create rocketmq-net

2.2 启动 RocketMQ NameServer

使用以下命令启动 NameServer:

docker run -d \
  --name rmqnamesrv \
  --network rocketmq-net \
  -p 9876:9876 \
  apache/rocketmq:latest \
  sh mqnamesrv

2.3 启动 RocketMQ Broker

启动 Broker 并连接到 NameServer:

docker run -d \
  --name rmqbroker \
  --network rocketmq-net \
  -p 10911:10911 \
  -p 10909:10909 \
  -e "NAMESRV_ADDR=rmqnamesrv:9876" \
  apache/rocketmq:latest \
  sh mqbroker -n rmqnamesrv:9876

2.4 验证 RocketMQ 是否运行正常

列出正在运行的容器:

docker ps

输出类似以下内容即表示容器运行正常:

CONTAINER ID   IMAGE                COMMAND                  STATUS         PORTS
abcdefgh1234   apache/rocketmq      "sh mqbroker -n rmq…"    Up 5 minutes   0.0.0.0:10911->10911/tcp, 0.0.0.0:10909->10909/tcp
ijklmnop5678   apache/rocketmq      "sh mqnamesrv"          Up 5 minutes   0.0.0.0:9876->9876/tcp


3. 访问 RocketMQ 服务

3.1 外部访问 RocketMQ

您可以直接通过主机名 localhost 和对应的端口访问 RocketMQ 服务。例如:

3.2 从容器内部访问(可选)

如果需要从容器内部访问 RocketMQ 服务,可以登录到运行中的 Docker 容器:

3.2.1 登录到容器的 Bash Shell

登录到 NameServer 容器:

docker exec -it rmqnamesrv /bin/bash

登录到 Broker 容器:

docker exec -it rmqbroker /bin/bash

3.2.2 使用命令行工具访问 RocketMQ

RocketMQ 提供了一些命令行工具,您可以通过容器内部运行这些工具访问服务。例如:

cd /home/rocketmq/bin
sh mqadmin clusterList -n localhost:9876


总结

如果需要更多帮助,请随时联系! 😊