Docker快速部署Nexus3

Nexus作为一个强大的本地私仓,用Maven的人都知道,在这里就不做详细的介绍了,有兴趣的可以去了解下。
最近换了新的工作环境,基本上什么基建都没有(除了技术哈哈),需要独立在本地环境部署一个Nexus服务,而且nexus也升级到了nexus3版本,所以这个任务就落到我身上了。
原本的Nexus部署方式过于麻烦,我们要的用Nexus提供的服务,并不是要做太大的改动。
因此我想到了用Docker的部署方式,方便,快捷...


此文同时在简书发布:https://www.jianshu.com/p/998c9e57fc48
此文同时在CSDN发布:https://blog.csdn.net/nthack5730/article/details/84347849
转载要加原文链接!谢谢支持!


前置准备

  1. 服务器或主机一台 - 废话了
  2. Docker CE - 不知道Docker或者没装的朋友可以去Docker官网了解下
  3. 确保8081端口没被占用,如果占用了,下面的命令中会告诉大家怎么修改到其他端口

1. 获取Nexus3镜像

首先,先获取nexus3镜像,虽然docker在本地找不到对应镜像的时候会去docker hub找对应的镜像。但是还是不建议直接run镜像(可能是代码洁癖)。

运行下面的命令,从中央仓库拉取一个nexus3的镜像:

docker image pull sonatype/nexus3

Nexus3镜像大小是500M左右,等等吧~~
上面这个是官方的镜像,如果想用别的也可以docker search nexus看看有没有想用的,将上面命令中sonatype/nexus3改为你想要的镜像

拉取完成之后,通过下面这条命令可以查看所有的镜像:

docker image ls

2. 运行Nexus3镜像,建立容器

在docker守护线程(后台)运行nexus3镜像,建立一个容器,并映射容器8081端口到宿主机8081端口,同时设置容器名称为nexus3

建议新手先别急着运行这条命令,看看下面对这条命令的解释。

docker run -d -p 8081:8081 --name nexus3 --restart=always sonatype/nexus3

先解释下这条命令:
-d:表示在docker守护线程运行这个镜像;
-p:表示绑定端口,前面的端口表示宿主机端口,后面的表示容器端口,如果宿主机的8081端口已经被占用了,那么可以改为8082:8081,为什么后面的是8081端口?这是Nexus服务自己设定的,可以修改,但是跑docker的话没必要了,下面都是以8081为nexus的端口;
--restart=always:这个指定docker重启启动容器,当服务器或者docker进程重启之后,nexus容器会在docker守护进程启动后由docker守护进程启动容器,容器的重启策略很多,大家可以自己去看看对应的资料;
--name <container-name>:这里是指定了容器建立后的名称;
最后面的sonatype/nexus3镜像名

3. 检查nexus3运行情况

Nexus官方提供了检查接口,ping-pong...

curl -u admin:admin123 http://localhost:8081/service/metrics/ping

nexus3初次运行需要几分钟,不一定马上启动马上响应

上面的用户名和密码根据自己本机的用户名密码修改即可
得到pong响应即表示nexus3启动完成

4. 访问nexus服务页面

以服务端口为8081为例,访问:http://{host}:8081/即可进入nexus
其中host为服务器的地址,如果是本机,则IP改为localhost

5. 管理Nexus容器

运行之后使用docker container ls查看你的容器,记住容器名,这就是上面为什么我们要命名容器名为:nexus3
停止启动重启Nexus,是通过容器来管理的:startstoprestart

docker container start nexus3
docker container stop nexus3
docker container restart nexus3

并不是run镜像!!!!!并不是run镜像!!!!!
如果每次都run镜像的话,那么每次run都会建立一个新容器、卷,刚学docker的时候踩过的坑。🤣🤣🤣

附:设置nexus容器自动启动

很多朋友可能一开始就run了镜像,没有设置好docker的容器自动启动,只要跑下面的命令更新下重启策略就好:

docker update --restart=always nexus3

语法是:

docker update <policy> <container-name>

相关的策略还有很多,有兴趣的朋友可以去docker官网找找。
Nexus到此部署完成,整个过程不包下载时间的话10分钟都不到。是不是很方便呢?期待大家点个赞哟!谢谢大家支持!

推荐阅读更多精彩内容