使用Nexus3创建docker个人仓库

  • 前言
  • 一、镜像下载
  • 二、Nexus配置
  • 1.启动容器
  • 2.登录GUI
  • 3.创建仓库
  • 4.创建Role
  • 5.创建User
  • 6.激活Realm
  • 三.配置匿名
  • 1.修改role
  • 2.激活Anonymous Access
  • 总结


@[TOC](文章目录)


前言

之前一直想用nexus创建一个docker私有仓库,找了很多网上的攻略发现都有问题,经过自己一番折腾,总结了一下,供大家避坑。


一、镜像下载

目前docker hub有官方发布的nexus3版本,直接可以使用docker命令获取最新镜像。

docker pull sonatype/nexus3

本人安装的版本:3.30.0-01

二、Nexus配置

1.启动容器

docker run -d -p 8081:8081 -p 5000:5000 -p 9090:9090 --restart=always --name nexus sonatype/nexus3

重要参数讲解:

-p 映射端口,前面是本地端口,后面的是容器端口,这里最好能多放几个端口出来(最好是一段端口),后面便于使用。

注:8081是nexus3的GUI默认端口,一定要放出。

2.登录GUI

如果是本地登录,在浏览器中直接输入:

localhost:8081

外部登录使用nexus所在服务的外部IP+Port进行登录。

进入页面后,nexus会开始执行初始化,等待初始化完成后,点击右上角“Sign in”图标。
从提示窗口获取包含默认密码的文件名,然后在nexus所在的容器中获取密码。

password=`docker exec -it nexus cat /nexus3-data/admin.password`
User: admin
Password: $password

登录成功后,记得修改登录密码。

3.创建仓库

找到“Server administration and configuration”,选择repository -> repositories,点击“Create repository”,找到docker,这里有三类docker仓库,分别是“group”、“hosted”、“proxy”,大致的区别如下,在此不做详细说明,各位自己在实践中自行体会。

名称

类型

group

多个类型外部仓库聚合

hosted

单个本地仓库

proxy

单个外部仓库链接

本人这里使用“docker(hosted)”作为daemon模板,除标记部分,其他的均使用了默认配置。
注:这里的HTTP配置端口必须使用容器创建时的已经映射端口否则仓库将无法访问。
最好不要使用8081,这里我用的是5000,如果用8081是否能正常工作等待验证。

nexus搭建docker本地仓库 nexus3 docker仓库_User

4.创建Role

选择security -> Role, 点击“Create role”,在“Privileges”中“Available”用关键字“view-docker”过滤信息,双击下面选项使其放入“Given”中。

nx-repository-view-docker-*-browse
nx-repository-view-docker-*-read

如果需要进行镜像push,添加“add”和“edit”,因为nexus权限非常的细化,这里不再逐一讨论,大家在实践中慢慢领悟。

nexus搭建docker本地仓库 nexus3 docker仓库_nexus搭建docker本地仓库_02


这里的“ * ”为通配符,即匹配所有的docker仓库,也可以只匹配某一个docker仓库。

5.创建User

选择“Create local user”,将刚才创建好的role添加到“Granted”中。
然后就可以使用该用户进行镜像操作。

6.激活Realm

选择“Realms”,找到“Docker Bearer Token Realm”,将其置为“Active”。

三.配置匿名

如果需要在不做login的情况下对镜像进行pull、push操作,需要做如下配置。

1.修改role

在User中将“nx-anonymous”添加到该用户中,如果使用“anonymous”,则需要将之前创建的docker相关的role添加给它。

2.激活Anonymous Access

选择“Anonymous Access”,并做如下配置。

nexus搭建docker本地仓库 nexus3 docker仓库_nexus搭建docker本地仓库_03


总结

个人理解nexus是一个非常好用综合仓库管理工具,不仅可以管理image,也可以管理charts、yum、maven等等。以及它配合仓库管理的一系列其他功能,都很强大。大家可以多多挖掘。
本人能力水平有限,分享自己的一点粗浅经验,有不足之组可留言补充。