美文网首页
使用 Nexus3 配置 Docker 私有库(待完善)

使用 Nexus3 配置 Docker 私有库(待完善)

作者: Eroc | 来源:发表于2023-08-07 15:28 被阅读0次

1. 安装 Nexus3


安装部署参考:Nexus3 安装配置

2. 配置 Docker 私有库


2.1 创建 blob 存储

为方便管理员进行仓库维护,建议按实际需要创建存储镜像的空间,如果不需要创建 blob,则可跳过这一章节。

创建blob存储1
给创建的存储空间命名Type选择File,然后补全Name信息,Path路径会自动补全。
创建blob存储2
然后保存即可。

PS,实际生产使用的时候,服务器的存储建议要在 500G 以上。

2.2 创建 hosted 类型的私有库

Nexus3 的仓库类型说明,可查看 Nexus3 仓库类型

点击 Repository下面的RepositoriesCreate repositorydocker(hosted) :

hosted 库
  • Name: 定义一个名称docker-local

  • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。

  • Repository Connectors

  • 下面包含HTTP和HTTPS两种类型的port。

  • 有什么用呢?说明讲得很清楚:

    • 连接器允许docker客户端直接连接到docker仓库,并实现一些请求操作,如docker pull, docker push, API查询等。但这个连接器并不是一定需要配置的,尤其是我们后面会用group类型的docker仓库来聚合它。

    我们把HTTP这里勾选上,然后设置端口为8083。

  • Force basic authentication

    勾选。这样的话就不允许匿名访问了,执行docker pull或 docker push之前,都要先登录:docker login

  • Docker Registry API Support

Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。

  • Storage

Blob store:我们下拉选择前面创建好的专用blob:idocker-hub。

  • Hosted

开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy。

整体配置截图如下:

hosted 库配置

2.3 创建 proxy 类型的代理库

点击 Repository下面的RepositoriesCreate repositorydocker(proxy)

Name这里填入当前仓库的名称,例如,docker-proxy-dockerhub 。

proxy 库

Proxy - Remote storage 这里,配置 DockerHub 代理时填入 https://registry-1.docker.io,配置 K8s 仓库时填入https://k8s.gcr.io,配置 quay.io 仓库时填入https://quay.io

Proxy - Docker Index 这里,配置 DockerHub 代理时选择 Use Docker Hub,配置其他仓库代理时选择 Use proxy registry(specified above)

去掉 Proxy - Auto blocking enabled 这里的对勾。

proxy 库配置 1

Storage - Blob store 这里,为当前配置的代理仓库选择前面创建的存储。

去掉 Negative Cache - Not found cache enabled 这里的对勾。

proxy 库配置 2

重复操作,创建完成 3 个仓库:docker-proxy-dockerhub、docker-proxy-k8sgcr、docker-proxy-quayio。

proxy 库列表

2.4 创建 group 类型的仓库

点击 Repository下面的RepositoriesCreate repositorydocker(group)

Name 这里填入当前仓库的命名,例如 docker-proxy-group

Repository Connectors 这里,勾选 HTTP 并填入一个未被占用的端口,必须与创建容器时映射的端口号一致。这里我使用 2000。

group 库配置 1

Storage - Blob store 这里选择前面给它创建的存储。

group 库配置 2

Group - Member repositorles 这里,将需要整合的仓库添加到右边,并按先后顺序排好。这里我需要整合 DockerHub 和 quay.io 两个仓库的代理,即 docker-proxy-dockerhub 和 docker-proxy-quayio。

group 库配置 3

2.5 配置 Docker 认证

Security - Realms 选项中,将Docker Bearer Token Realm添加到右边,保存即可。

3. 常见错误


docker pull

错误 log :

Head "https://<nexus3_ip>/v2/<docker_group_name>/<image_name>":http:server gave HTTP respose to HTTPS client

问题分析:

搭建的 Nexus3 私服,使用的是 http 协议;docker 下载镜像时默认下载的是 https 协议的链接,所以导致失败。

解决方案:

# 修改本地 /etc/docker/daemon.json 文件,如果没有,则新建
vim /etc/docker/daemon.json

{
    "insecure-registries":"<nexus3_ip>:<docker_group_port>"
}

# 保存推出后,重启 docker 服务,此处需要 sudo 权限
systemctl daemon-reload && systemctl restart docker

相关文章

网友评论

      本文标题:使用 Nexus3 配置 Docker 私有库(待完善)

      本文链接:https://www.haomeiwen.com/subject/cusnortx.html