构建Docker镜像仓库的另一选择:Nexus3(一)

版权声明:本文为junehappylove原创文章,未经junehappylove允许不得转载。 https://blog.csdn.net/junehappylove/article/details/82683167

我们知道,构建企业内部私有Docker镜像仓库有很多选择,比如可以采用原生的Docker
Registry服务,也可以部署更加专业的工具,例如SUSE team的Portus
https://github.com/SUSE/Portus)或VMware出品的Harbor(https://github.com/vmware/harbor)。我们也就曾对Harbor这样的产品做过较为详细的分析(http://mp.weixin.qq.com/s/oQoLgNgnfM8TQHnDDOOIog)。然而像Harbor这样的明星级镜像仓库管理器组件较为复杂,有没有比Docker原生的registry功能丰富而又简单易用的其它选择呢?

做Java研发项目的同事应该对于搭建Maven私服的工作不陌生,他们会选择例如Apache Archiva,Jfrog Artifactory或Sonatype Nexus之类的工具。在本篇文章我们要向大家介绍的正是Sonatype Nexus 3这个强大的工具,它不仅仅能够用于创建Maven私服,还可以用来创建bower、npm、nuget、pypi、rubygems等各种私有仓库,受到docker技术不断被追捧的影响,Nexus从3.0版本也开始支持创建Docker镜像仓库了。

让我们开始一次Nexus3的体验吧,当然一切的工作我们都会以Docker容器化的方式进行,这也许正是一个追求简单易用的趋势吧!

首先让我们获得Nexus3的Docker镜像,这样我们即可免除手动安装调试的麻烦。

[root@ecs-a30e-0002 ~]# yum install -y git # 必须先安装git
[root@ecs-a30e-0002 github]# git clone https://github.com/sonatype/docker-nexus3
[root@ecs-a30e-0002 github]# cd docker-nexus3/
[root@ecs-a30e-0002 ~]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@ecs-a30e-0002 docker-nexus3]# docker build -t sonatype/nexus:3 .
Sending build context to Docker daemon  206.8kB
Step 1/20 : FROM centos:centos7
 ---> 5182e96772bf
# 漫长的等待...
Getting information for chef stable  for el...
downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=&p=el&pv=7&m=x86_64
  to file /tmp/install.sh.9/metadata.txt
trying curl...
sha1    569b671470a5a9e6ae2a0f759609c631a6a99931
sha256  f7fbef8594cade92bcc7e47cfa075bfec6a10b432ae901ae9e8a3f5c25702e29
url https://packages.chef.io/files/stable/chef/14.4.56/el/7/chef-14.4.56-1.el7.x86_64.rpm
version 14.4.56
downloaded metadata file looks valid...
downloading https://packages.chef.io/files/stable/chef/14.4.56/el/7/chef-14.4.56-1.el7.x86_64.rpm
  to file /tmp/install.sh.9/chef-14.4.56-1.el7.x86_64.rpm
trying curl...
Comparing checksum with sha256sum...
# 漫长的等待...
Successfully built 2f3064f8f13e
Successfully tagged sonatype/nexus:3
[root@ecs-a30e-0002 rancher]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
sonatype/nexus            3                   687578d612b9        About a minute ago   505MB
sonatype/nexus3           latest              777b20c20405        2 weeks ago          505MB
rancher/server            latest              38d4a75fa8f9        5 weeks ago          1.08GB
centos                    centos7             5182e96772bf        5 weeks ago          200MB
rancher/agent             v1.2.11             1cc7591af4f5        7 weeks ago          243MB
rancher/net               v0.13.17            f170c38e3763        7 weeks ago          311MB
rancher/dns               v0.17.4             678bde0de4d2        2 months ago         249MB
rancher/scheduler         v0.8.5              0a2bfb5d8831        2 months ago         248MB
rancher/healthcheck       v0.3.8              ce78cf69cc0b        2 months ago         391MB
rancher/metadata          v0.10.4             02104eb6e270        2 months ago         251MB
rancher/network-manager   v0.7.22             13381626c510        2 months ago         256MB
sonatype/nexus            latest              0bf093afada3        2 months ago         467MB
rancher/net               holder              665d9f6e8cc1        17 months ago        267MB

注意:上面中的 第一条是我们自己打包的nexus的镜像,后面的Tag = 3 可以看出,其他的镜像是我从官方拉取的;另外可以参考官方镜像制作

创建nexus-data目录,并且设置用户 200 ,否则后面的服务启动不成功(查看日志就是提示对目录无权限操作)

[root@ecs-a30e-0002 rancher]# pwd
/home/rancher
[root@ecs-a30e-0002 rancher]# ll
total 4
drwxr-xr-x 15 200 root 4096 Sep 13 02:03 nexus-data

通过上面Build Image的过程,我们得到了Nexus3的镜像,接下来我们在Rancher平台进行部署(当然你也可以通过一条docker run指令将容器运行起来,例如docker run –d --name=Nexus3 --restart=always -p 8081:8081 -p 8088:8088 –v /home/rancher/nexus-data:/nexus-data sonatype/nexus:3)。
选择Rancher平台的好处是部署方便,全部基于UI图形界面完成操作,更进一步我们还可以将这个Nexus3制作成应用商店(Catalog)随时备用。

第一步 在Rancher平台添加应用栈

填写应用栈名称为Sonatype,描述为Nexus Repository Manager

第二步 在该应用栈下添加Nexus3服务

填写docker镜像为前面步骤生成的sonatype/nexus:3,添加两个端口映射项目,其中8081是Nexus服务自身的Web管理页面端口,8088是我们用于Docker镜像仓库服务的端口。(可以根据实际情况只有定义);
这里写图片描述

设置卷挂载条目,以便将Nexus的配置信息及数据持久保存于宿主机,这里Nexus容器内的/nexus目录被映射到RancherOS宿主机的/home/rancher/nexus-data目录下。
这里写图片描述

这里注意了,目录/home/rancher/nexus-data需要给用户200

好了,到这里就可以访问 http://ip:8081 了,等待一会儿,nexus初始化完成
这里写图片描述
一切都是如此的优雅简洁,不到一分钟时间,我们的Nexus3服务便已经启动正常了。点击应用栈里的8081端口链接,我们便打开了Nexus的登录窗口,输入默认用户名及密码admin/admin123:
这里写图片描述
噢,这里首先映入眼帘的就是一堆图标,像APTComposerConanCPANDockerELPAGitLFSHelmMavennpmNuGetP2PyPIRRawRubyGemsYum。这么多私服都支持,还有什么是你不值得高兴的呢?


所有安装参考自这里,我是边安装边记录;我的本意其实是仅仅用Nexus搭建一个Maven的私服而已,只不过大神文章太好了,了解到Nexus3的强大之处。

猜你喜欢

转载自blog.csdn.net/junehappylove/article/details/82683167
今日推荐