以下是一个详细的指导文档,帮助您在 Ubuntu 22.04 上完成以下任务:
首先更新系统软件包以确保安装最新的依赖:
sudo apt update
sudo apt upgrade -y
安装 Docker 所需的依赖:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加 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
更新软件包缓存并安装 Docker:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
运行以下命令以确保 Docker 已正确安装:
sudo docker --version
输出类似于以下内容即表示安装成功:
Docker version 24.0.2, build abcdefg123
将当前用户添加到 docker
用户组以避免每次使用 Docker 都需要 sudo
:
sudo usermod -aG docker $USER
退出并重新登录终端,以使组更改生效。验证是否可以正常运行:
docker run hello-world
RocketMQ 提供了官方的 Docker 镜像,您可以通过以下步骤快速启动。
为 RocketMQ 创建一个自定义 Docker 网络(便于容器间通信):
docker network create rocketmq-net
使用以下命令启动 NameServer:
docker run -d \
--name rmqnamesrv \
--network rocketmq-net \
-p 9876:9876 \
apache/rocketmq:latest \
sh mqnamesrv
--name rmqnamesrv
: 给容器起一个名字,便于管理。--network rocketmq-net
: 使用之前创建的 Docker 网络。-p 9876:9876
: 将容器的 9876 端口映射到主机,NameServer 默认监听该端口。sh mqnamesrv
: 命令告诉容器启动 NameServer。启动 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
-p 10911:10911
: 映射 Broker 通信端口。-p 10909:10909
: 映射 Broker 外部服务端口。-e "NAMESRV_ADDR=rmqnamesrv:9876"
: 配置 Broker 使用的 NameServer 地址。sh mqbroker -n rmqnamesrv:9876
: 启动 Broker 并指定 NameServer 地址。列出正在运行的容器:
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
9876
提供服务。10911
,外部访问端口为 10909
。您可以直接通过主机名 localhost
和对应的端口访问 RocketMQ 服务。例如:
localhost:9876
localhost:10909
如果需要从容器内部访问 RocketMQ 服务,可以登录到运行中的 Docker 容器:
登录到 NameServer 容器:
docker exec -it rmqnamesrv /bin/bash
登录到 Broker 容器:
docker exec -it rmqbroker /bin/bash
RocketMQ 提供了一些命令行工具,您可以通过容器内部运行这些工具访问服务。例如:
cd /home/rocketmq/bin
sh mqadmin clusterList -n localhost:9876
localhost:9876
)直接访问,也可以登录到容器内部进行操作。如果需要更多帮助,请随时联系! 😊