鹏叔(https://pengtech.net)

导航

Linux (Centos) 上安装Nexus OSS 3 并搭建docker私有仓库

Linux (Centos) 上安装Nexus OSS 3

前言

我安装Nexus的目的主要是想创建一个Docker的私有仓库。针对Docker私有仓库的搭建,目前有多种解决方案,有docker官方提供的registry镜像和Harbor等。

首先来说registry, registry的入门比较简单, 也比较轻量级,符合我理想的私有仓库的入门方式,也能满足我当前的需求,缺点就是它过于轻量,只满足我当前的需求。考虑到将来一定是多用户协助开发项目的情况,所以将来一定会有用户,角色,权限控制的需求,所以我想一步到位,直接上有权限管控的私有仓库解决方案,不想为将来移植私有仓库埋下技术债务。再说Harbor, harbor提供了完善的权限管控,漂亮的管理界面,也符合我的扩展需求,但是由于harbor是多个开源项目整合而成的一个私有仓库解决方案,所以在安装入门阶段特别麻烦。如果没有其他选择,我肯定使用Harbor来搭建一个私有docker仓库。 比较了Harbor和Nexus后, 发现Nexus更符合我扩展性需求,首先它的底层是使用Java开发的,我的项目主体也是Java技术站,有很多基层设施可以重用,另外它还支持多种格式的私有仓库,支持maven, npm, docker等等一些私有仓库。安装方式更简洁,管理更简单,功能更强大。另外Harbor 是开源免费的,Nexus也开源,分为免费版和收费版,毕竟开源也得有饭吃,才能走得更远,发展得更好,将来项目盈利,也要买收费版支持一下。出于多方面的考虑,我选定了Nexus作为我私有仓库的解决方案。

Nexus介绍

叫Nexus的产品有很多,比如google 基于Android的手机Nexus,现在已经发展到第十代了. 思科有一款交换机也叫Nexus. 这里要介绍的是sonatype Nexus, 是一款私有仓库的解决,目前支持多种私有仓库的搭建,比如Maven, yum, npm私有库等等,详情请参考下图:

 

 

 

更多详情可访问官方网站:https://www.sonatype.com/nexus/repository-oss-download

github项目: https://github.com/sonatype/nexus-public

从Nexus 3开始,Nexus已经支持 Docker仓库的创建,Nuxus2 是不支持Docker 镜像仓库的

安装Nexus

参考官方安装文档:https://help.sonatype.com/repomanager3/installation

安装环境说明:

Centos 7+

系统要求:

至少1 VCPU & 2 GB内存

防火墙要打开 22 和 8081端口

要安装OpenJDK 8

所有的Nexus进程要以普通用户身份运行

安装

 Nexus的安装有两种实现方式:

一种方式是通过tar.gz包安装, 另一种是通过docker镜像安装.

1)通过tar.gz包安装

下载地址,当前最新版本3.29.2-02

https://help.sonatype.com/repomanager3/download

Step 1:登陆Linux server 安装必要的工具包
sudo yum update -y
sudo yum install wget -y
Step 2: 安装 OpenJDK 1.8
sudo yum install java-1.8.0-openjdk.x86_64 -y
Step 3: 下载并安装

这里下载最新的压缩安装包. 

sudo wget -O /tmp/nexus.tar.gz https://download.sonatype.com/nexus/3/latest-unix.tar.gz

实际会被重定向到 https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz,由于众所周知的原因,下载速度可能会很...慢, 如果懂得Ke学上网,再不违反网络安全法的前提下,最好使用该项技能。所以如果要找历史版本,可以参考以上地址去找。

感谢wjxScott的分享,花了几个小时的时间到处找安装包,最后在wjxScott的github库中找到了分享连接。在CSDN上也找到了下载连接,但是下载流程非常复杂,下载一次要掏0.43元,还要我安装CSDN app,  我是不会为这么流氓的软件付一分钱的,虽然我的百度网盘每月也要出18元会员费,但是觉得值得。

这里我重新创建了一个百度网盘分享连接

链接:https://pan.baidu.com/s/1vWvU5qMeWEmRIxEedM94tw 
提取码:wpyx 
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V2的分享

下载完成后  scp 到服务器

scp nexus-3.29.2-02-unix.tar.gz  remote_user@your_server_id:/tmp

 

 解压压缩包

sudo tar -xvf /tmp/nexus-3.29.2-02-unix.tar.gz -C /usr/local

Step 5: 创建用户

出于安全考虑, 建议不要使用管理员身份运行或任何有sudo权限的用户来运行Nexus. 建议创建一个新用户来运行Nexus, 例如nexus

sudo adduser nexus

修改文件所有者,

sudo chown -R nexus:nexus /opt/nexus
sudo chown -R nexus:nexus /opt/sonatype-work

注:如果不存在sonatype-work目录,则先创建它,再修改所有者。

 

配置Nexus

Step 1: 配置Nexus

 打卡/opt/nexus/bin/nexus.rc 文件

sudo vi /opt/nexus/bin/nexus.rc

配置以新用户nexus 运行程序

取消run_as_user前面的注释,并配置如下

run_as_user="nexus"
Step 2: 修改默认数据存储路径

默认情况下,按以上方式安装,数据会保存在/opt/sonatype-work/nexus3, 如果要修改默认路径,可以打开配置文件

sudo vi /app/nexus/bin/nexus.vmoptions

修改“-Dkaraf.data” 使其指向期望的数据目录

Step 3: 将Nexus设为开机启动
sudo vi /etc/systemd/system/nexus.service

添加如下内容

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
User=nexus
Group=nexus
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

 

设为开机启动

sudo systemctl enable nexus

启动程序

sudo systemctl start nexus

使用命令查看服务状态

 

如果出现问题,使用如下命令,查看具体问题

sudo journalctl -xe

 如果以上日志没有帮助,可以继续查看/opt/nexus 目录下以hs_err_pid打头的日志文件

 

服务默认监控在8081 端口上,如果一切顺利,这时通过打开浏览器访问http://your_server_id:8081能访问nexus管理界面.

 

登陆用户名为admin, 默认密码保存在/opt/sonatype-work/nexus3/admin.password, 可以根据自己的需要进行修改

cat /app/sonatype-work/nexus3/admin.password

关闭nexus, 可以使用如下命令

sudo systemctl stop nexus

重启Nexus, 可以使用如下命令

sudo systemctl restart nexus

 

2)docker镜像方式安装(如果已经私有压缩包安装,此处略过)

Docker Image https://hub.docker.com/r/sonatype/nexus3/

此处暂时略过,等待尝试后更新

 

安装完成并登陆后,将会看到一下界面

 

 

 搭建Docker 私有仓库

详情可参考这篇文章,为了不使文档膨胀得过快,此处不做截图。

点击设置界面,选择Repositories,点击Create repository 

 

选择仓库类型,这里Docker有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择docker(hosted): 

 注:Docker镜像仓库类型含义解释如下:

  hosted : 本地存储,即同docker官方仓库一样提供本地私服功能

  proxy : 提供代理其他仓库的类型,如docker中央仓库

  group : 组类型,实质作用是组合多个仓库为一个地址

 

 

指定docker仓库的名称、指定一个端口用来通过http的方式进行访问仓库、勾选是否支持docker API V1,然后create repository;

注意: 勾选这一项:Create an HTTP connector at specified port. Normally used if the server is behind a secure proxy

并给定一个端口例如8089 此端口是用于镜像仓库的服务端口,后面客户端登陆要用到。

这样一个镜像仓库就创建好了。

 

配置docker客户端测试:

客户端配置

由于当前docker仓库没有配置https连接方式,所以是一种不安全的连接方式,在客户端配置时要将其添加到insecure-registries不安全的registries,

这里的不安全主要是指登陆镜像仓库时输入的用户名,密码容易被网络中的第三者截取,所以最好在服务器端配置https, 虽然步骤麻烦点,但是配置完成后省心,这里只是将整个流程走通,如果是生产环境,墙裂建议配置 https。

$vi /etc/docker/daemon.json
{
    "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],
    "insecure-registries":["http://192.168.xxx.x:8089"]
}

重启docker进程: systemctl restart docker

查看docker信息: docker info ,有如下输出即正常

 

登陆镜像仓库 

 

 上传镜像

查看镜像

 

 将hello-world打标签,上传到私有仓库

 

 

 

 

 

 

 

 测试拉取镜像

先清除本地镜像

 

 

 

 从私有仓库拉取镜像并运行

 

至此,使用Nexus OSS 3.x 配置私有镜像仓库成功!还有更多特性等待深入探索,后续将会持续更新。

参考文档

https://blog.51cto.com/lzlutao/2378438

https://devopscube.com/how-to-install-latest-sonatype-nexus-3-on-linux/

https://www.cnblogs.com/kevingrace/p/6201984.html

Nexus私服启动失败:

https://blog.csdn.net/ziwuzhulin/article/details/79791674

使用 Nexus Repository Manager 搭建私有docker仓库

https://www.cnblogs.com/jihongjun/p/8968901.html

 

posted on 2021-02-06 10:50  eagle.supper  阅读(1330)  评论(0编辑  收藏  举报