1、进入docker hub,搜索rabbit镜像
https://registry.hub.docker.com/_/rabbitmq/
2、进入官方的镜像,我们选择带有“management”的版本(包含web管理界面)
https://hub.docker.com/_/rabbitmq?tab=tags
#通过以下方式无法查询到,问题未知
[root@localhost ~]# docker search 3.7.7-management
Error response from daemon: Get https://index.docker.io/v1/search?q=rabbitmq&n=25: x509: certificate has expired or is not yet valid
#解决办法一:
[root@localhost docker]# cd /etc/docker/
[root@localhost docker]# vim daemon.json
#添加内容:
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
#重新启动docker
[root@localhost docker]# systemctl restart docker
#解决方法二(我的是这个原因导致的,一般都是本地系统时间错误导致报错证书过期,所以先查看本地系统时间):
[root@localhost docker]# date
2020年 08月 28日 星期五 14:16:11 CST
#修改本地时间:
[root@localhost docker]# date -s "2021-05-21 17:08:00"
2021年 05月 21日 星期五 17:08:00 CST
#再次搜索可以使用不报错
3、拉取镜像
[root@localhost docker]# docker pull rabbitmq:3.8.16-management
3.8.16-management: Pulling from library/rabbitmq
01bf7da0a88c: Pull complete
f3b4a5f15c7a: Pull complete
57ffbe87baa1: Pull complete
5ef3ef76b1b5: Pull complete
82a3ce07c0eb: Pull complete
1da219d9bd70: Pull complete
446554ac749d: Pull complete
8e4c09e200e7: Pull complete
7a8620611ebf: Pull complete
c70a2924b273: Pull complete
3b0b9e36b4e9: Pull complete
7619a9a42512: Pull complete
965a8e1f1b1c: Pull complete
Digest: sha256:6c10ded1e4c69c1707de60e71ebabd93e65d1ef31fa91071c77389293bad8ffd
Status: Downloaded newer image for rabbitmq:3.8.16-management
docker.io/library/rabbitmq:3.8.16-management
#查看已经拉取的镜像
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq 3.8.16-management fc7a5d55df34 2 weeks ago 186MB
4、根据下载的镜像创建和启动容器
docker run -d --name rabbitmq3.8.16 -p 5672:5672 -p 15672:15672 -v /home/rabbitmq/data:/var/lib/rabbitmq --hostname my-rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin@2021 rabbitmq:3.8.16-management
#说明:
-d:后台运行容器
-p:指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号)
-v:映射目录或文件
-hostname:主机名(RabbitMQ的一个重要注意事项是它根据所谓的“节点名称”存储数据,默认为主机名)
**One of the important things to note about RabbitMQ is that it stores data based on what it calls the "Node Name", which defaults to the hostname. What this means for usage in Docker is that we should specify -h/--hostname explicitly for each daemon so that we don't get a random hostname and can keep track of our data.**
-e指定环境变量:(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
5、查看正在运行的容器
[root@localhost rabbit@my-rabbit]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8852d7f2ec79 rabbitmq:3.8.16-management "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq3.8.16
6、使用浏览器打开web管理端,访问地址:http://192.168.30.161:15672/
7、把镜像导出
docker save fc7a5d55df34 > rabbitmq.tar
#或者
docker save -o rabbitmq.tar fc7a5d55df34
8、镜像导入
docker load < rabbitmq.tar
或者
docker load -i rabbitmq.tar
#修改tag
docker tag fc7a5d55df34 rabbitmq:3.8.16-management
参考:
https://registry.hub.docker.com/_/rabbitmq/
https://www.cnblogs.com/yufeng218/p/9452621.html