Nexus介绍
Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。除此之外,Nexus还可以管理Docker镜像
通常的做法:本地仓库没有,则去中央仓库下载
搭建私库的做法:本地仓库没有,再去私服下载,私服没有,再去中央仓库下载
docker安装Nexus3.x
安装docker
在我的另一篇文章有说明,直接使用yum安装,非常简单,请移步:
Docker第二篇-Linux和Windows下安装Docker
安装Nexus3
准备好一台虚拟机,执行以下命令:
#创建宿主机挂载目录并设置权限
mkdir -p /usr/local/nexus3/nexus-data
chown -R 200 /usr/local/nexus3/nexus-data
docker run -d \
--privileged=true \
--name nexus3 \
--restart=always \
-p 8081:8081 \
-p 8082:8082 \
-p 8083:8083 \
-p 8084:8084 \
-p 8085:8085 \
-v /usr/local/nexus3/nexus-data:/nexus-data \
sonatype/nexus3
8081:8081表示宿主机端口和容器端口映射(web访问)
8082:8082表示nexus服务端口
本地若不存在sonatype/nexus3镜像,则会去下载,下载完毕后直接启动
docker logs -f 容器ID 查看日志显示
-------------------------------------------------
Started Sonatype Nexus OSS 3.19.1-01
-------------------------------------------------
2019-12-02 13:20:13,667+0000 WARN [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Ignoring deprecated socket close linger time
2019-12-02 13:20:13,704+0000 INFO [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@54968822{HTTP/1.1,[http/1.1]}{0.0.0.0:8082}
安装完毕!
登录验证
访问web地址:http://ip:8081/
默认账号为:admin
默认密码在文件中:/usr/local/nexus3/nexus-data/admin.password
web界面使用
Browse可以查看当前有多少仓库,搭建好的Nexus,默认会带有一些maven仓库,一般使用这些仓库就足够了
默认仓库说明
maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar,初次安装请将Deployment policy设置为Allow redeploy
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml或项目pom.xml中使用
仓库类型
Group:这是一个仓库聚合的概念,用户仓库地址选择Group的地址,即可访问Group中配置的,用于方便开发人员自己设定的仓库。maven-public就是一个Group类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x默认Releases,Snapshots,Central,当然你也可以自己设置。
Hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的jar文件
3rd party:未发布到公网的第三方jar (3.x去除了)
Snapshots:本地项目的快照仓库
Releases: 本地项目发布的正式版本
Proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage属性的值即被代理的远程仓库的路径),如可配置阿里云maven仓库
Central:中央仓库
Apache Snapshots:Apache专用快照仓库(3.x去除了)
上传镜像
登录私服仓库
注意在push上传之前必须要先登录
[root@rancher ~]# docker login 172.16.66.3:8082
打标记
在上传镜像之前需要先打一个tag,用于版本标记。
格式是这样的:
docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag>
例如:
# docker tag httpd 172.16.66.3:8082/httpd:v1
最后上传镜像:
# docker push 172.16.66.3:8082/httpd:v1
pull镜像
从私服中下载镜像也很简单,执行以下命令即可
# docker pull 172.16.66.3:8082/httpd:v1
搜索镜像
搜索镜像也与之前的类似,如下:
# docker search 172.16.66.3:8082/httpd:v1
就可以搜索带有httpd的镜像了:
总结
有了这个私服过后,真的是非常方便了。因为官方的dockerhub镜像仓库下载实在是太慢了。