按照阿里云的操作文档安装 docker:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
这里仅写 Windows 版的,其他版本见上面的链接
1. 安装/升级Docker客户端
对于Windows 10以下的用户,推荐使用Docker Toolbox
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
对于Windows 10以上的用户 推荐使用Docker for Windows
Windows安装文件:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/
2. 配置镜像加速器
针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:
创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。
docker-machine create --engine-registry-mirror=https://fnuvamgc.mirror.aliyuncs.com -d virtualbox default
查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。
docker-machine env default
eval "$(docker-machine env default)"
docker info
针对安装了Docker for Windows的用户,您可以参考以下配置步骤:
在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:
{
"registry-mirrors": ["https://fnuvamgc.mirror.aliyuncs.com"]
}
编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。
注意
Docker for Windows 和 Docker Toolbox互不兼容,如果同时安装两者的话,需要使用hyperv的参数启动。
docker-machine create --engine-registry-mirror=https://fnuvamgc.mirror.aliyuncs.com -d hyperv default
Docker for Windows 有两种运行模式,一种运行Windows相关容器,一种运行传统的Linux容器。同一时间只能选择一种模式运行。
运行docker。如果是 windows 系统的话,直接安装客户端,启动docker即可。如果是 linux 系统执行以下命令即可。
systemctl start docker
查看进程
ps -ef | grep docker
搜索镜像。比如搜索 rabbitmq
docker search rabbitmq
拉取镜像到本地
docker pull rabbitmq
查看已经安装的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq latest d445c0adc9a5 13 months ago 220MB
运行 rabbitmq
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
查询运行中的容器
docker ps
查询全部容器
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06a9986bb9fe rabbitmq “docker-entrypoint.s…” 12 minutes ago Up 12 minutes 4369/tcp, 0.0.0.0:5672->5672/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbit
上面开头的 CONTAINER ID
下面的 06a9986bb9fe
就是容器的 ID
之前配置运行过了的话,直接启动容器即可
docker start 容器ID
docker stop 容器ID
docker restart 容器ID
查看容器的详细信息
docker inspect 容器id
新建容器时设置为自启动
docker run -d --restart=always --name my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq
为已存在的容器配置自启动
docker update --restart=always 容器id 或 容器名称
取消自启动
docker update --restart=no 容器id 或 容器名称
批量设置自启动
docker update --restart=always $(docker ps -aq)
进入容器终端
docker exec -it 容器ID /bin/bash
进入终端后,使用命令比如开启 rabbitmq 的 web 管理界面
rabbitmq-plugins enable rabbitmq_management
docker 启动 rabbitmq
单节点启动
docker run -it --rm -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
这是官方的例子
多节点启动
普通集群
#节点一,主节点,创建-v映射目录
docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/1/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/1/log:/var/log/rabbitmq rabbitmq:management
#节点二,创建-v映射目录
docker run -d --hostname rabbit_host2 --name rabbitmq2 -p 15673:15672 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/2/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/2/log:/var/log/rabbitmq rabbitmq:management
#节点三,创建-v映射目录
docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 15674:15672 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_NODENAME=rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' --privileged=true -v /usr/local/rabbitmq/3/lib:/var/lib/rabbitmq -v /usr/local/rabbitmq/3/log:/var/log/rabbitmq rabbitmq:management
参数说明:
--hostname 自定义Docker容器的 hostname
--link 容器之间连接,link不可或缺,使得三个容器能互相通信
--privileged=true 使用该参数,container内的root拥有真正的root权限,否则容器出现permission denied
-v 宿主机和容器路径映射
参数 RABBITMQ_NODENAME,缺省 Unix*: rabbit@$HOSTNAME
参数 RABBITMQ_DEFAULT_USER=admin
参数 RABBITMQ_DEFAULT_PASS=xdclass.net168
Erlang Cookie 值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同, 相当于不同节点之间通讯的密钥,erlang.cookie是erlang的分布式token文件,集群内各个节点的erlang.cookie需要相同,才可以互相通信
上面是启动了三个节点,就是三个rabbitmq,但仍没有形成集群。
配置普通集群
#节点一配置集群
docker exec -it rabbitmq1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
#节点二加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。
docker exec -it rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit
#节点三加入集群,--ram是以内存方式加入,忽略该参数默认为磁盘节点。
docker exec -it rabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit_host1
rabbitmqctl start_app
exit
#查看集群节点状态,配置启动了3个节点,1个磁盘节点和2个内存节点
rabbitmqctl cluster_status
上述步骤完成后就配置好普通集群了。
集群分为两类:普通集群和镜像集群。
相同点:都拥有各个节点的元数据信息。
不同点:镜像集群会复制各个节点的交换机、队列和信息。而普通集群仅仅拥有交换机和队列,信息不会进行复制,即拥有信息的节点一旦宕机,集群内部就无法消费该信息。
配置镜像集群
去到rabbitmq控制台,一般是:ip地址:15672
Admin->Policies
参数说明:
ha-mode:同步节点模式
- all:全部
- exactly:设置同步节点数
- nodes:设置特定同步节点,用配置ha-params说明
ha-sync-mode:同步模式
- manual:手动
- automatic:自动
一般如同所示设置即可
完成后,就完成rabbitmq多节点的部署了。
-
阿里云 - 容器镜像服务
-
docker启动rabbitmq - NeverLateThanBetter - 博客园 (cnblogs.com)
-
Docker部署并启动RabbitMQ_普通网友的博客-CSDN博客_docker启动rabbitmq
-
docker 启动rabbitmq - 编程之家 (jb51.cc)