安装nexus3
1 | mkdir -p /usr/local/nexus3 |
问题补记
问题:nexus启动失败,报错 cannot open local storage ‘/nexus-data/db/{config或者component}‘ with mode=rw
1 | # 切记在磁盘满了的情况不要随意清除blob下vol文件,但可以尝试拷贝出去,之后启动nexus成功后再拷贝回来 |
docker仓库规划(一)
在Nexus3中支持3种Docker仓库:
hosted
:本地仓库,同Docker官方仓库一样。proxy
:代理仓库,提供代理其他仓库的功能,如我内网只有一台主机能上网,其他主机不能上网,则可以在可以上网的主机上面配置这种代理仓库,然后别的不能上网的主机就可以通过该代理仓库下载docker镜像了。group
:聚合仓库,将多个仓库组合成一个仓库。
我需要配置这三种类型的仓库,现规划如下:
仓库类型 | 仓库名称 | HTTP端口号 | HTTPS端口号 | 支持docker操作 |
---|---|---|---|---|
proxy代理仓库 | docker-proxy | 8001 | 不设置 | pull |
hosted本地仓库 | docker-hosted | 8002 | 不设置 | pull、push |
group聚合仓库 | docker-group | 8003 | 不设置 | pull |
创建docker blob 对象
为了使docker的blob和其他的不同,我们创建一个docker的blob,用来存储docker相关的文件。
依次点击【Repository】--【Blob Stores】--【Create Blob Store】:

Blob类型选择File
:

然后,名称设置为docker
,不勾选【Soft Quota】,最后点击【Save】保存:

可以看到,新的Blob创建成功:

然后,创建docker-proxy
代理仓库。
创建docker-proxy代理库
进入到设置页面后,点击左侧的【Repositories】进入到仓库管理页面,点击【Create Repository】按钮,我们需要使用的docker仓库,以看到docker(proxy)
:
docker代理仓库说明:
- name: docker-proxy
- format: docker
- type: proxy
- HTTP端口:8001
- HTTPS端口:不勾选,忽略
- Allow anonymous docker pull ( Docker Bearer Token Realm required ): 允许匿名下载镜像,勾选该处。
- Enable Docker V1 API: 允许docker客户端使用V1 API,勾选该处。
- Remote storage: 远程存储仓库的URL地址【可以配置成国内加速源地址】。
- Docker Index: 这里为了确保能够拉取 DockerHub 最新的镜像,我选择了 Use DockerHub 这个 Index。
- HTTP request setting,HTTP请求设置,我们一般只需要设置一下User-Agent请求头即可,如填写"Sync docker image. email: mzh.whut@gmail.com"。

注意,代理URL请使用科大镜像、网易、阿里云等加速源,或者腾讯内网地址https://mirror.ccs.tencentyun.com ,不要使用截图中的腾讯外网地址 https://mirrors.cloud.tencent.com 。
使用 docker
Blob存储,最后点击【Create repository】创建仓库即可。
创建后,点击新创建的docker-proxy
仓库,可以看到仓库详情:
创建docker-hosted本地仓库
创建docker-hosted
本地仓库:
docker本地仓库说明:
- name: docker-hosted
- format: docker
- type: hosted
- HTTP端口:8002
- HTTPS端口:不勾选,忽略
- Allow anonymous docker pull ( Docker Bearer Token Realm required ): 允许匿名下载镜像,勾选该处。
- Enable Docker V1 API: 允许docker客户端使用V1 API,勾选该处
- Blob store: 选择【docker】blob对象
- Deployment policy: 测试时,先可以选择【Allow redeploy】允许重复发布,后期如果用在正式生产环境时,可以将该修改为【Disable redeploy】。

相关信息填写好后,最后点击【Create repository】创建仓库即可。
创建docker-group聚合仓库
创建docker-group
聚合仓库:
docker聚合仓库说明:
- name: docker-group
- format: docker
- type: group
- HTTP端口:8003
- HTTPS端口:不勾选,忽略
- Allow anonymous docker pull ( Docker Bearer Token Realm required ): 允许匿名下载镜像,勾选该处。
- Enable Docker V1 API: 允许docker客户端使用V1 API,勾选该处
- Blob store: 选择【docker】blob对象
- Group: Member Repositories,将【docker-hosted】和 【docker-proxy】添加到右侧,这里成员仓库的顺序可以稍微规划下,一般来说将本地的放前面,代理第三方的放后面,好处就是优先使用本地或小众的镜像仓库。


相关信息填写好后,最后点击【Create repository】创建仓库即可。
这样我们三个docker仓库已经创建好了:

开启匿名访问权限/Token
依次点击【Security】--【Realms】,将【Docker Bearer Token Tealm】添加到右侧

配置是否允许匿名登录【勾选上红框标记的位置】

最后点击【Save】保存即可。
测试代理仓库下载镜像
先修改/etc/docker/daemon.json
配置:
1 | [root@master ~]# cd /etc/docker/ |
重启docker服务:
1 | [root@master ~]# systemctl daemon-reload |
执行下载镜像之类后,在nexus上面检查Blob对象:

在nexus Browse中也可以看到对应的镜像信息:

如果能够正常代理,则下载镜像时,上面两个位置的信息会发生变化,blob对象会增加,Browse浏览器中也可以看到新下载的镜像信息。
docker仓库规划(二)
- 仅创建一个docker hosted仓库供push和pull私有镜像
- pull第三方镜像使用国内镜像源优化速度
新建docker blob

创建docker-hosted仓库

添加Token/配置匿名

配置docker
在daemon.json中添加如下配置
1 | { |