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的安装有两种实现方式:
1)通过targ.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: 切换到/opt
cd /opt
Step 4: 下载并安装
从这里下载最新的压缩安装包.
sudo wget -O 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 /opt
更名
sudo mv nexus-3* nexus
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