资讯专栏INFORMATION COLUMN

Nexus3私有仓库搭建 docker+maven+npm

bang590 / 1196人阅读

摘要:安装号称是世界上最流行的私服管理软件可以搭建几乎目前所有常见的仓库如等更是增加了对仓库的支持应该是搭建私服的唯一选择有两个版本和其中版本是免费专业版需要收费对于日常的仓库管理已经足够用支持二进制文件安装和安装这里选择安装简单方便运行以下命令

安装

Nexus号称是世界上最流行的私服管理软件(The world"s most popular repository),可以搭建几乎目前所有常见的仓库如npm,maven,yum等,Nexus3更是增加了对docker仓库的支持 ,应该是搭建私服的唯一选择.

Nexus有两个版本 Nexus Repository OSS和Nexus Repository Pro,其中OSS版本是免费,Pro专业版需要收费.OSS对于日常的仓库管理已经足够用.

Nexus OSS支持二进制文件安装和docker安装,这里选择docker安装,简单方便.

运行以下命令即可完成安装

</>复制代码

  1. $ docker run -d -p 8081:8081 sonatype/nexus3
  2. #可以挂载本地目录做数据持久化
  3. $ mkdir /some/dir/nexus-data && chown -R 757 /some/dir/nexus-data
  4. $ docker run -d -p 8081:8081 -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

在nexus3官方docker仓库说明文档里挂载目录设置的权限为200但实际安装的时候无法启动,权限不够,错误如下:

</>复制代码

  1. mkdir: cannot create directory "../sonatype-work/nexus3": Permission denied
  2. mkdir: cannot create directory "../sonatype-work/nexus3": Permission denied
  3. Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to Permission denied
  4. Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log
  5. Warning: Forcing option -XX:LogFile=/tmp/jvm.log
  6. Unable to update instance pid: Unable to create directory /nexus-data/instances
  7. /nexus-data/log/karaf.log (Permission denied)
  8. Unable to update instance pid: Unable to create directory /nexus-data/instances
  9. Exception in thread "Thread-2" java.lang.SecurityException: Could not lock User prefs. Lock file access denied.
  10. at java.util.prefs.FileSystemPreferences.checkLockFile0ErrorCode(FileSystemPreferences.java:937)
  11. at java.util.prefs.FileSystemPreferences.lockFile(FileSystemPreferences.java:925)
  12. at java.util.prefs.FileSystemPreferences.sync(FileSystemPreferences.java:729)
  13. at java.util.prefs.FileSystemPreferences.flush(FileSystemPreferences.java:824)
  14. at java.util.prefs.FileSystemPreferences.syncWorld(FileSystemPreferences.java:464)
  15. at java.util.prefs.FileSystemPreferences.access$1200(FileSystemPreferences.java:50)
  16. at java.util.prefs.FileSystemPreferences$4$1.run(FileSystemPreferences.java:442)

修改为757后正常启动.等待启动完,访问http://host:8081测试是否安装成功.

Nextus3搭建docker私有仓库

Nextus3仓库都有三种类型

hosted(本地类型)资产的提交和拉取都基于本地存储

proxy(代理类型)本地不做数据存储,可以和hosted配合

group(组合类型)可以组合多个hosted和proxy并按顺序,并提供统一访问地址

docker本地仓库(hosted)搭建

访问http://host:8081登陆,默认用户名密码admin/admin123

点击Repository->Blob Stores->Create blob store创建本地存储

</>复制代码

  1. Type:file
  2. Name:definesys-docker-store
  3. Path:/nexus-data/blobs/definesys-docker-store

因为要存储镜像请保证该目录下有足够空间,可以挂在NAS到该目录下.

点击Repositories->Create repositories->docker(hosted)创建本地仓库

</>复制代码

  1. Name(仓库名称):definesys-docker-repo
  2. Http(仓库开放端口):8001
  3. Docker Registry API Support:必须选上
  4. Storage:选择刚创建的definesys-docker-store
  5. 其余选项默认即可

这样就完成一个docker私有仓库的创建,过程还是很简单的.

docker代理仓库(proxy)搭建

点击Repositories->Create repositories->docker(proxy)创建代理仓库

</>复制代码

  1. Name(仓库名称):definesys-docker-proxy
  2. Http(仓库开放端口):8002
  3. Docker Registry API Support:必须选上
  4. Proxy->remote storage:https://registry-1.docker.io/
  5. Docker index选择Use Docker Hub
  6. Storage:选择刚创建的definesys-docker-store这样就可以和hosted共用一个存储实现本地优先本地拉取本地找不到再从远程仓库拉取
  7. 其余选项默认即可
docker组合仓库(group)搭建

</>复制代码

  1. Name(仓库名称):definesys-docker-group
  2. Http(仓库开放端口):8003
  3. Docker Registry API Support:必须选上
  4. Storage:选择刚创建的definesys-docker-store
  5. Group:
  6. definesys-docker-repo
  7. definesys-docker-proxy
  8. 其余选项默认即可
docker客户端配置

编辑daemon.json文件

</>复制代码

  1. $ vi /etc/docker/daemon.json
  2. {
  3. "insecure-registries": [
  4. "http://localhost:7001",
  5. "http://localhost:7002",
  6. "http://localhost:7003"
  7. ],
  8. "disable-legacy-registry": true
  9. }

重启docker

</>复制代码

  1. $ systemctl restart docker

启动Nexus3容器,将三个端口映射到主机上

</>复制代码

  1. $ docker run -d -p 8081:8081 -p 8001:8001 -p 8003:8003 -p 8002:8002 -v /root/u01/nexus-data:/nexus-data sonatype/nexus3

4.分别登陆三个仓库

</>复制代码

  1. $ docker login -u admin -p admin123 http://localhost:8001
  2. $ docker login -u admin -p admin123 http://localhost:8002
  3. $ docker login -u admin -p admin123 http://localhost:8003

Nexus会将登陆信息记录在~/.docker/config.json,这样下次就不用再次登陆:

</>复制代码

  1. {
  2. "auths": {
  3. "http://localhost:8003": {
  4. "auth": "YWRtaW46YWRtaW4xMjM="
  5. },
  6. "http://localhost:8001": {
  7. "auth": "YWRtaW46YWRtaW4xMjM="
  8. },
  9. "http://localhost:8002": {
  10. "auth": "YWRtaW46YWRtaW4xMjM="
  11. }
  12. }
  13. }
docker镜像上传

将本地镜像打tag(这里以ubuntu镜像为例)上传到hosted仓库(8001)

</>复制代码

  1. $ docker tag docker.io/ubuntu:15.10 localhost:8001/defiensys-ubuntu:15.10
  2. $ docker push localhost:8001/defiensys-ubuntu:15.10

登陆Nexus3查看结果

docker镜像拉取

通过group仓库

</>复制代码

  1. #拉取docker hub上镜像
  2. $ docker pull localhost:8003/mysql
  3. #拉取私服镜像
  4. $ docker pull localhost:8003/defiensys-ubuntu:15.10
Nextus3搭建maven私有仓库

待续...

Nextus3搭建npm私有仓库

待续...

遗留问题

无法通过group上传镜像,报以下错误

</>复制代码

  1. $ docker push localhost:8003/oraclelinux:v1.0
  2. The push refers to a repository [localhost:8003/oraclelinux]
  3. 3b431d8f4cd1: Preparing
  4. error parsing HTTP 404 response body: invalid character "<" looking for beginning of value: "
  5. <span class="hljs-attr">404</span> <span class="hljs-string">- Nexus Repository Manager</span>
  6. Nexus Repository Manager
  7. OSS 3.13.0-01
  8. Error 404
  9. Not Found
  10. Not Found
  11. "

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27441.html

相关文章

  • 使用nexus3.x配置docker镜像仓库仓库代理

    摘要:正好我们在使用作为的仓库,同时提供了等诸多类型的仓库功能。值得一提的是,我们可以使用这个仓库从和下载镜像,但是我们不能通过这个仓库推送镜像到远程仓库。 背景 我们一直使用 harbor 作为docker的镜像仓库,但Harbor只能作为私有仓库,当需要Docker Hub 或 Google Cloud Containers 上的镜像时,我们只能自己手动pull,重新打tag,再push...

    HollisChuang 评论0 收藏0
  • DevOps 从零开始-仓库环境搭建Docker,Nginx,Nexus,Gitlab,免费Htt

    摘要:本文章用于描述如何从零开始进行阿里云仓库的搭建,以及过程中遇到的相关问题。涉及的内容包括,,,,。目标硬盘挂载阿里云额外购买的硬盘服务,需要仅挂载后才可以正常使用。域名代理免费代理的域名通过阿里云域名解析暴露到外网。 本文章用于描述如何从零开始进行阿里云仓库的搭建,以及过程中遇到的相关问题。涉及的内容包括Docker,Nginx,Nexus,Gitlab,Https。 背景 需要搭建一...

    FWHeart 评论0 收藏0
  • 写这么多系列博客,怪不得找不到女朋友

    摘要:前提好几周没更新博客了,对不断支持我博客的童鞋们说声抱歉了。熟悉我的人都知道我写博客的时间比较早,而且坚持的时间也比较久,一直到现在也是一直保持着更新状态。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好几周没更新博客了,对不断支持我博客的童鞋们说声:抱歉了!。自己这段时...

    JerryWangSAP 评论0 收藏0
  • DevOps 基于Walle的小型持续集成实战(二)设计

    摘要:以便对整个持续集成印象加深。配置完各环境发布脚本后,则可以使用构建发起进行触发环境准备。并会在远程环境上存放多次发布的版本,用于回退和切换服务停用。进行等操作,停止原本运行的服务切换启用。 该文章用于建立一个小型的基于Walle的持续集成工具。解决java,react,angular项目的编译发布。以便对整个持续集成印象加深。官方网站:https://walle-web.io/ 适用...

    zr_hebo 评论0 收藏0
  • 使用 docker + verdaccio 搭建npm私有仓库

    摘要:本文介绍如何使用搭建私有仓库,以及使用时如何映射到本地目录,方便简单对仓库进行各种操作。其次,创建目录,并添加的配置文件。当需要把某个项目发布到私有库时,直接。使用包名,即可安装私有包了。本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作。系统环境是 Linux。 verdaccio verdacci...

    fantix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<