基于nexus3搭建docker镜像仓库(registry mirror)
摘要
本文记录使用 nexus 3 部署 docker 镜像仓库及镜像代理功能。 使用 Kubespray 在安装 kubernetes 过程中,会直接从官方镜像仓库(如 hub.docker.com,gcr.io, quay.io 等)拉取镜像,同时还会从 github 下载 kubeadm、etcd、cni 等二进制文件,重度依赖访问外网,因此我们有必要先配置镜像代理服务器。
安装 nexus 3
-
下载 nexus-3.20.1-01-unix.tar.gz
访问如下地址,随便填写一个邮箱,下载 nexus oss 二进制包:
Nexus Repository OSS - Universal Repository Solution | Sonatype -
解压并启动服务
cd /data/ tar xf /root/nexus-3.20.1-01-unix.tar.gz ln -sf nexus-3.19.1-01 nexus cd nexus && bin/nexus start以上会将服务运行在
8081端口,默认账户名/密码:admin/admin123
配置 nexus 使用 http 代理
-
准备一个可以正常访问外网的代理
省略。 - 在 nexus 中配置代理设置
在 neuxs 的 System - HTTP 下,勾选 HTTP proxy 并填写上述端口和地址:HTTP proxy host:127.0.0.1
HTTP proxy host:30888 - 排除代理国内服务
有时候我们也想用 nexus 来整合国内的一些下载服务,以及我们自己的私有仓库,提供统一的入口。
如果还让这些仓库走代理,那就又慢又耗费 v.p.s 流量了。不用担心,Nexus 提供了在 HTTP 代理中排除域名的功能,只要将国内的域名添加到排除列表即可。
配置 Docker 仓库代理
-
创建 Blobs
在 Nexus 上创建一个 Docker 专用的 Blob,Nexus 会在磁盘上创建一个对应的目录并存储文件及索引。
这样,如果某天我们要在其它环境部署一套一样的代理,我们可以直接拷贝 Nexus 应用目录,以及这个 blob 存储就行了。在 设置 - Repository - Blob Stores 下,新建一个 Blob,比如名为
blob-docker。 -
创建 Repositries
依次配置添加下面几个仓库地址的 Docker 镜像代理,类型选择 Proxy:- https://hub.docker.com
- https://gcr.io
- https://k8s.gcr.io
- https://quay.io
- https://elastic.co
最后配置一个 Group 类型的 Docker 仓库,将前面代理类型仓库进行聚合。
这里需要为 Group 类型的仓库地址监听一个端口,用来提供 docker 服务,我们使用 8082 。然后为这个服务绑定一个域名,并配置 https 证书。
做完这些,我们就有一个自己的 Docker 镜像仓库地址了, 比如域名为:
https://hub.fintecer.com
如何使用
- 直接替换镜像地址中的域名,后面的路径保持不变,例如:
docker pull hub.fintecer.com/busybox docker pull hub.fintecer.com/nginx:1.16.0 docker pull hub.fintecer.com/coreos/etcd:v3.2.26 - Docker 守护进程设置 registry-mirrors 参数
如果我们在 docker 的 daemon.json 文件指定了"registry-mirrors": ["https://hub.fintecer.com"],配置, 我们甚至可以不用域名就能直接拉取镜像了。
daemon.json 示例:mkdir /etc/docker cat > /etc/docker/daemon.json << EOF {"registry-mirrors": ["https://hub.fintecer.com"],"bip": "10.255.255.1/24","ipv6": false } EOF# 重启服务 systemctl daemon-reload systemctl restart docker最后使用如下方式下载镜像:
docker pull busybox docker pull nginx:1.16.0 docker pull coreos/etcd:v3.2.26
当我们从 github 下载现成的 yaml 文件时,几乎无需修改镜像地址就能正常拉起服务了,非常方便。
使用nexus部署docker镜像仓库本文记录使用 nexus 3 部署 docker 镜像仓库及镜像代理功能。使用 Kubespray 在安装 kubernetes 过程中,会直接从官方镜像仓库(如 hub.docker.com,gcr.io, quay.io 等)拉取镜像,同时还会从 github 下载 kubeadm、etcd、cni 等二进制文件,重度依赖访问外网,因此我们有必要先配置镜像代理服务器。
https://www.fintecer.com/posts/nexus-repository/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
