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

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

背景

我们一直使用  作为docker的镜像仓库,但Harbor只能作为私有仓库,当需要 或  上的镜像时,我们只能自己手动pull,重新打tag,再push到harbor上。

当需要拉取多个镜像时,这样相当麻烦,尤其是我们使用Kubespray来部署Kubernetes集群,仅仅准备镜像就需要花费很多时间。

我们希望有一个Docker仓库,能同时托管私有镜像,还能代理访问公共的镜像仓库。

正好我们在使用Nexus作为Maven的仓库,同时nexus3提供了Docker, yum, apt, npm, ruby gems, pypi 等诸多类型的仓库功能。

经过技术调研,Nexus3完全可以达到我们的预期。

Nexus3 提供了的3种类型的Docker仓库,前两者都可以创建多个仓库,最后一个则可以将他们全部聚合到一个URL来访问。

  • docker (hosted): 自托管
  • docker (proxy): 代理
  • docker (group): 聚合

配置Docker仓库

运行一个nexus3服务器

curl -SLO https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.12.1-01-unix.tar.gz

tar -C /data/nexus3 -xf nexus-3.12.1-01-unix.tar.gz
export RUN_AS_USER=root
/data/nexus3/exus-3.12.1-01/bin/nexus start

默认端口是8081, 用户名/密码:admin/admin123

登录nexus3,点击设置齿轮,并定位到左侧的Repository:

www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

创建一个hosted类型的docker仓库

Hosted类型仓库用作我们的私有仓库,替代harbor的功能。

创建专用的blob

为了仓库数据的独立性和安全性,我们可以给每一个repository创建一个独立的Blob块存储。

点击 Repository下面的 Blob Stores - Create blob store:

  • Name:填写一个易于辨认的名字
  • Path:会自动生成并补全。默认在Nexus安装目录下面的sonatype-work/nexus3/blobs/下,也可以修改到其它目录或磁盘,甚至可以是NFS或者cephfs的目录。
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

创建hosted类型的私有仓库

点击 Repository下面的 Repositories - Create repository - docker(hosted) :

  • Name: 输入一个简洁直观的名字
  • Online: 勾选。这个开关可以设置这个Docker repo是在线还是离线。
  • Repository Connectors

下面包含HTTPHTTPS两种类型的port。

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

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

因此,这里我们不勾选并且不填写端口,Nexus就不会启动一个监听到某个端口的连接器。

当然,如果你希望直接访问该仓库,你可以填写一个端口如:8090,然后在daemon.json中设置
"insecure-registries": [172.xx.xxx.xxx:8090"], 重启docker后,通过如下命令访问:

docker push 172.xx.xxx.xxx:8090/centos:7.5.1804

Force basic authentication

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

  • Docker Registry API Support

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

  • Storage

Blob store,我们下拉选择前面创建好的专用blob:blob-docker-private

  • Hosted

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

  • 截图展示
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

创建一个proxy类型的docker仓库

proxy类型仓库,可以帮助我们访问不能直接到达的网络,如另一个私有仓库,或者国外的公共仓库,如Google cloud registry。

对于代理Docker hub, 官方有简要的文档可以参考,就不再细写,请参考

下面以创建一个Google cloud registry的代理为例,简要写一下如何创建proxy类型的docker仓库。

  • 创建一个专用的blob
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理
  • 创建一个proxy类型的仓库
  • Name: proxy-google-containers
  • Repository Connectors: 不设置。

Proxy

  • Remote Storage: Google cloud registry的地址:https://gcr.io

配置docker hub的proxy时,这里填写: https://registry-1.docker.io

  • Docker Index: Use proxy registry(specified above)

配置docker hub的Docker Index时,点选Use Docker Hub或者填写:https://index.docker.io/

  • Storage: blob-google-containers
  • 截图
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

创建一个group类型的docker仓库

group类型的docker仓库,是一个聚合类型的仓库。它可以将前面我们创建的3个仓库聚合成一个URL对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能。

Group类型创建过程类似于上面的proxy类型。

  • 名字比较简单:registry
  • 启用了一个监听在80端口的http连接器;
  • Storage:选择专用的blob存储blob-docker-group
  • group : 将左边可选的3个仓库,添加到右边的members下;
  • 截图
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

如何使用仓库

  • 配置代理服务器

根据我们上面配置,我们还无法直接使用仓库,我们还得配置一个代理服务器。

Setting - System - HTTP 下,设置一个代理服务器。

www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

代理服务器我们使用搭建,这里不详述。

使用仓库

根据以上配置,这个仓库就有一个可以使用的URL了,可以使用下面的命令直接pull上面push的镜像:

docker pull 172.xx.xxx.xxx/centos:7.5.1804 

以上行为会优先从本地仓库(docker-private)查找,没有再从代理仓库(docker-hub 和 google-containers)查找。

我们再来pull一个 google-containers的镜像看看:

docker pull 172.xx.xxx.xxx/google-containers/kubernetes-dashboard-amd64:v1.8.3

当然,因为我们的仓库禁用了匿名用户访问,你需要先登录docker registry:

docker login 172.xx.xxx.xxx -u admin -p xxxxxxxxxx
www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

成功了。

同理,我们可以拉取docker hub上的镜像,只要把url中的域名,替换成我们自己的域名就可以了。

最后我们看下镜像仓库的存储结构:

www.zeeklog.com  - 使用nexus3.x配置docker镜像仓库及仓库代理

可以看到,Docker Hub的官方仓库镜像,被放到了libray 目录下,GCR的则新建了一个google-containers 的目录,而其他的用户的镜像,则会被放在用户名同名的目录下,目录名与远程目录一致。

值得一提的是,我们可以使用这个仓库从Docker Hub和 Google Cloud Registry下载镜像,但是我们不能通过这个仓库推送镜像到远程仓库。我们推送的所有镜像都会被存储在私有仓库内。

Read more

图书管理系统(9)前端代码修改 & 系统完结

图书管理系统(9)前端代码修改 & 系统完结

图书管理系统(9)前端代码修改 & 系统完结 文章目录 * 图书管理系统(9)前端代码修改 & 系统完结 * 观前提醒: * 无Mybatis版本获取: * 基于 Mybatis版本 的获取: * 目录结构: * 个人建议: * 1. login.html(登录页面) * 2. book_update.html(图书更新) * 3. book_list.html(图书列表) * 4.add_book.html(添加图书) * 5. 总结: 观前提醒: 这个图书管理系统,非常的简陋,仅作为练习使用。不建议大家使用我介绍的 图书管理系统 ,去作为 课程设计。 如果你是第一次点击这篇博客的,需要你将我 图书管理系统

双剑破天门:攻防世界Web题解之独孤九剑心法(九)

双剑破天门:攻防世界Web题解之独孤九剑心法(九)

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任 **本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的web题目进行演示,如果你感兴趣请关注** 目录 一:Supersqli 二:Warmup 三:总结 1.supersqli 2.Warmup 一:Supersqli 打开如下所示,初步筛查这应该是一道SQL注入题 这确实是一道SQL注入 1’ or 1=1 # 那接下来就是查询字段数 字段数为2 1’ order by 2 # 查询数据库 正常的查询发现不行,被过滤了 但是没有过滤分号那就可以堆叠注入联合show 1’;show tables ;# 成功查询到一个特殊的表 1';show columns from `1919810931114514`;# 查询发现此表含flag但select被过滤如何查询flag 利用handler代替select

常见浏览器 WebDriver 驱动下载

以下是常见浏览器 WebDriver 驱动的下载地址及注意事项,综合多个可靠来源整理而成: 一、Chrome 浏览器(ChromeDriver) 1. 官方下载地址http://chromedriver.storage.googleapis.com/index.html • • 版本匹配:需与 Chrome 浏览器版本对应,可通过浏览器地址栏输入 chrome://version/ 查看版本号。 2. 注意事项 • 若下载新版无对应驱动,推荐访问 Chrome for Testing 镜像站:https://googlechromelabs.github.io/chrome-for-testing/。 二、Firefox 浏览器(GeckoDriver) 1. 官方下载地址https://github.com/mozilla/geckodriver/releases • 选择与 Firefox

SameSite=Lax属性(前端Set-Cookie属性)(跨站链接跳转保留登录态、防御跨站请求POST CSRF、防御跨站请求资源CSRF)子资源请求、安全铁三角HttpOnly&Secure

文章目录 * SameSite=Lax:在安全与体验间走钢丝的现代 Cookie 智慧 * 🌉 为什么需要 Lax?—— 从“安全困境”说起 * ❌ Strict 的代价 * ❌ None 的风险 * ✅ Lax 的破局 * 🔬 深度解析:Lax 到底“宽松”在哪里? * 📊 三模式终极对比表 * 💻 实战:正确设置 Lax(附避坑指南) * Node.js (Express) 推荐配置 * PHP 设置 * ⚠️ 必须牢记的 3 个原则 * 🌰 真实场景推演 * 场景:用户从 Gmail 点击“重置密码”链接 * 场景:恶意网站尝试 CSRF 攻击(子资源请求) * 💡 何时该选 Strict?