开发的时候需要在测试环境安装RabbitMQ,而测试环境一般是不会去麻烦运维大哥的,所以就自己安装。想着直接yum install不就好了嘛,当时也没当回事。可以在真正安装的时候傻眼了,测试服务器是一台内网服务器,直接yum install根本不行,因为只能用公司自己的镜像源,这不完了嘛,早知道就不活要面子死受罪得说自己装了。
没办法去网上百度了半天,找到一篇文章是教怎么在内网服务器离线安装Docker的,前提是需要一台有外网的服务器,自己刚好有几台阿里云服务器,又想到了Docker可以保存本地镜像打包到其他服务器上运行,先装Docker,再用有外网的服务器上Docker打包RabbitMQ镜像拷贝到内网服务器中Docker里来也没问题,思路清晰,就照着文章中一步一步来了。
先贴文章链接:
也是非常感谢这位大佬,这个方法亲测有效,但是我自己实际安装的时候还是遇到一些小问题,这里也记录一下解决办法。
问题就是当我把外网服务器中构建好的本地源拷贝到内网服务器中后,yum install docker-ce安装的时候出现了一系列的软件包版本不合适,如下:
思路清晰的我第一时间举一反三,想到用文章中相同的方法,把这些软件需要版本的rpm包也做到本地源中一起拷贝过来不就好了,就像这样:
举个例子,这样selinux-policy-targeted这个软件包需要的版本rpm包就一起被做成本地源了,美滋滋,以为会很顺利,可是在下载部分软件rpm包的时候出现了这种情况:
这个libsepol在我的云服务器中已经是最新版本了,它就不下载了,看一下yum list:
这可咋办,而且这个软件是@anaconda的又不太好用yum remove卸载,这个时候就要给大家推荐一个网址了:
http://rpmfind.net/linux/rpm2html/search.php?query=erlang&submit=Search+...&system=&arch=
对RPM find,在这里面可以找到绝大多数的rpm包,我也是顺利找到了libsepol-2.5-10这个版本的rpm包:
把这个rpm包下载下来以后拷贝进文章中说的dockerfile文件夹中就好了,和用yum下载一个道理,然后再一起做成本地源。
然后把做好的本地源拷贝到了内网服务器,再次尝试了yum install docker-ce,这里可能还会遇到一个问题,就不截图了,就是服务器不停得在尝试其他镜像地址,这里只需要把/etc/yum.repos.d/文件夹下的其他.repo先拿掉,就只保留自己做的local.repo就好了,如图:
经过这么一番折腾,终于离线装好了Docker:
好不容易弄好的本地源,我已经上传了,需要的自取,放上链接:
https://download.csdn.net/download/weixin_42447959/12532859
这样Docker就装好了,然后再装RabbitMQ就简单了。
先在装有Docker的外网服务器中下载RabbitMQ镜像,下载前先去Docker Hub(https://hub.docker.com/verify-email)中找到想要镜像版本的tag:
用docker save下载最新的3.8.5并保存到指定文件夹:
然后把这个rabbitmq.tar拷贝到内网服务器中。
用docker load加载这个镜像,并用docker images查看已经加载的镜像:
然后就可以在docker中启动rabbitMQ了:
如果是第一次运行某个镜像要先用docker run命令,去官网上找对应镜像的对应docker run命令:
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.8.5
这种docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要docker run+镜像ID即可。
停止镜像则先用docker ps确认一下RabbitMQ的运行状态,再用docker stop + container_id的方式去停止镜像:
需要注意的是我这里装的RabbitMQ是不带管理界面的版本,如果要装带管理界面的版本,选tag后面有management的:
这两个RabbitMQ的镜像包都上传了,放上链接:
https://download.csdn.net/download/weixin_42447959/12532834