Docker安装部署Nexus3作为内网镜像代理缓存容器镜像

news2025/2/26 15:21:54

Docker安装部署Nexus3作为内网镜像代理

一、背景描述

基础镜像比较小,仓库使用阿里云或者腾讯云拉取速度挺快,但是时光飞逝几年时间过去,再加上AI加持的情况下,有些镜像的大小已经接近20G!
这种情况下不管是测试环境还是开发环境拉取镜像都会占用公司宽带流量,因此需要在测试环境搭建一台容器代理,用于缓存镜像!

二、搭建Nexus3作为镜像代理缓存阿里云、腾讯仓库私有镜像

2.1、Docker部署Nexus3

#数据持久化目录
mkdir -p /data/nexus3
#授权
chmod 777 -R /data/nexus3
#创建nexus3容器。
docker run -tid \
 --privileged=true\
 --network=host \
 --restart=always \
 -v /data/nexus3:/nexus-data \
 --name nexus3 \
  sonatype/nexus3

#查看默认密码
cat /data/nexus3/admin.password 

2.2、登录nexus3并修改默认密码

修改默认密码,设置来宾用户访问
在这里插入图片描述
否则拉取镜像时会有如下报错:

[root@localhost certs.d]# crictl pull nginx
FATA[0002] pulling image failed: rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/library/nginx:latest": failed to unpack image on snapshotter overlayfs: unexpected media type text/html for sha256:b6a78ff088000afc609fcbc701d18704ddb944e867af0dadd520d4bf0e5af328: not found 

三、配置Nexus3代理阿里云、腾讯云私有镜像仓库

3.0 备注

这里会创建三个代理
1、阿里云镜像加速
2、阿里云私有镜像仓库(内含公开镜像)
3、腾讯云私有镜像仓库
私有镜像仓库需要配置认证账号密码

3.1、创建Blob Store

在这里插入图片描述

3.2、创建阿里云私有镜像仓库代理

在这里插入图片描述
设置代理信息
在这里插入图片描述
勾选缓存镜像layer,选择创建的Blob store
在这里插入图片描述
因为使用的阿里云北京区的镜像仓库,所以这里填入北京区地址,如果是腾讯云仓库替换即可。
填入阿里云私有仓库认证账号密码
在这里插入图片描述
信息填完后点击Create repositories 完成创建。

3.3、重复3.2步骤创建好腾讯私有镜像仓库代理!

3.4、创建Docker-Group

选择docker(group类型)
在这里插入图片描述
红框需要设置或勾选信息
通过8888端口对外提供代理服务
在这里插入图片描述

把刚创建的docker代理加入到群组中
在这里插入图片描述

四、配置Containerd通过Nexus3镜像仓库下载镜像

4.0、Containerd 版本:

[root@localhost src]# ctr version
Client:
  Version:  v1.6.21
  Revision: 3dce8eb055cbb6872793272b4f20ed16117344f8
  Go version: go1.19.9

Server:
  Version:  v1.6.21
  Revision: 3dce8eb055cbb6872793272b4f20ed16117344f8
  UUID: 01b66c6f-637c-4a15-a5db-fb0f75f1fe60

4.1、containerd默认配置

[root@localhost src]# cat /etc/containerd/config.toml 
version = 2
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0

[grpc]
  address = "/run/containerd/containerd.sock"
  uid = 0
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[debug]
  address = "/run/containerd/containerd-debug.sock"
  uid = 0
  gid = 0
  level = "warn"

[timeouts]
  "io.containerd.timeout.shim.cleanup" = "5s"
  "io.containerd.timeout.shim.load" = "5s"
  "io.containerd.timeout.shim.shutdown" = "3s"
  "io.containerd.timeout.task.state" = "2s"

[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    sandbox_image = "sealos.hub:5000/pause:3.2"
    max_container_log_line_size = -1
    max_concurrent_downloads = 20
    disable_apparmor = true
    [plugins."io.containerd.grpc.v1.cri".containerd]
      snapshotter = "overlayfs"
      default_runtime_name = "runc"
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          runtime_type = "io.containerd.runc.v2"
          runtime_engine = ""
          runtime_root = ""
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            SystemdCgroup = true
    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
          [plugins."io.containerd.grpc.v1.cri".registry.configs."sealos.hub:5000".auth]
            username = "admin"
            password = "passw0rd"

4.3、添加nexus3代理镜像

在config_path = “/etc/containerd/certs.d” 路径下创建需要经过nexus3的仓库文件夹

/etc/containerd/certs.d
[root@localhost certs.d]# ls -l
总用量 0
drwxr-xr-x 2 root root 24 9月   9 00:30 ccr.ccs.tencentyun.com
drwxr-xr-x 2 root root 24 9月   8 23:50 docker.io
drwxr-xr-x 2 root root 24 9月   8 23:50 registry.cn-beijing.aliyuncs.com
drwxr-xr-x 2 root root 24 9月   8 23:14 sealos.hub:5000
drwxr-xr-x 2 root root 24 9月   8 23:50 tf72mndn.mirror.aliyuncs.com
[root@localhost certs.d]# 

配置信息:

[root@localhost certs.d]# cat registry.cn-beijing.aliyuncs.com/hosts.toml 
server = "https://registry.cn-beijing.aliyuncs.com"

[host."http://172.27.100.251:8888"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true

4.4、重启Containerd并拉取镜像验证

[root@localhost certs.d]# systemctl restart containerd
[root@localhost certs.d]# crictl pull nginx

在这里插入图片描述
如上图所示,镜像已缓存!

五、Docker通过Nexus代理下载镜像

5.1、配置Nexus–Security–Realms

在这里插入图片描述

5.2、修改docker daemon.json配置

[root@localhost ~]# cat /etc/docker/daemon.json
{
    "insecure-registries": [
        "172.27.100.251:8888"
    ],
     "registry-mirrors": [
	"http://172.27.100.251:8888"
    ],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-opts": {
        "max-file": "3",
        "max-size": "500m"
    }
}

docker info

 Insecure Registries:
  172.27.100.251:8888
  127.0.0.0/8
 Registry Mirrors:
  http://172.27.100.251:8888/
 Live Restore Enabled: false

拉取镜像测试

参考:https://blog.csdn.net/qq_30051761/article/details/131139204

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230908-考题记录

题目描述 给定一个数组nums和窗口大小win,每个win种的最大值为maxNum,最小值为minNum,求出该数组所有窗maxNum和minNum的最大差值。 示例1: 输入: nums [2, 3, 5, 7, 6, 8, 1]; win 3 输出: 7 解析&#xff1…

[html]当网站搭建、维护的时候,你会放个什么界面?

效果图&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网站建设中</title><style>/* 基础样式 */body, html {margin: 0;padding: 0;height: 100%;font-family: Arial, sa…

快速排序算法的递归和非递归

基本思路 选择一个基准值&#xff0c;将数组划分三个区域&#xff0c;小于基准值的区域位于左侧&#xff0c;等于基准值的区域位于中间&#xff0c;大于基准值的区域位于右侧。将大于和小于区域继续进行分区&#xff0c;周而复始&#xff0c;不断进行分区和交换&#xff0c;直…

PHP 如何设计一个高安全的电商平台:淘宝/京东商品类API封装接口

电商API接口有哪些安全问题&#xff1f; 如何保证API接口安全 接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计&#xff0c;保证接口的数据不会被篡改和重复调用&#xff0c;下面具体来看&#xff1a; Token授权机制&#xff1a;用户使用用户名密码登录后服务器给…

HTML5Plus

之前写过在 vue 中使用 mui 框架的方法&#xff0c;因为用 vue 开发后打包 5App 会有一些问题&#xff0c;所以当时用到了&#xff0c;最近又一次开发移动端&#xff0c;不同的是这次使用的是 vue3 开发的&#xff0c;导致之前使用的 vue-awesome-mui 依赖不能使用了&#xff0…

Redis原理:IntSet

&#xff08;笔记总结自b站黑马程序员课程&#xff09; 一、结构 IntSet是Redis中set集合的一种实现方式&#xff0c;基于整数数组来实现&#xff0c;并且具备长度可变、有序等特征。 结构如下&#xff1a; typedef struct intset {uint32_t encoding; //编码方式uint32_t l…

计算机视觉领域经典模型汇总(2023.09.08

一、RCNN系列 1、RCNN RCNN是用于目标检测的经典方法&#xff0c;其核心思想是将目标检测任务分解为两个主要步骤&#xff1a;候选区域生成和目标分类。 候选区域生成&#xff1a;RCNN的第一步是生成可能包含目标的候选区域&#xff0c;RCNN使用传统的计算机视觉技术&#x…

Matlab 如何选择采样频率和信号长度

Matlab 如何选择采样频率和信号长度 1、概述 在实际信号分析中经常会遇到要分辨出频率间隔为 的两个分量&#xff0c;在这种情形中如何选择采样频率和信号的长度呢&#xff1f; 2、案例分析 设有一个信号由三个正弦信号组成&#xff0c;其频率分别为 &#xff0c;即&#xf…

流程图 and/or/xor 讲解

and表示后续2个活动同时触发&#xff0c; or表示后续2个活动可触发其中的1个或2个&#xff0c;无排他性&#xff0c;也就是每个活动的触发不影响其他活动&#xff1b; xor表示后续2个活动只触发一个&#xff0c;有排他性&#xff0c;也就是只能触发其中一个。 示例演示“OR”…

网络安全架构:建立安全架构方法的指导框架

01 关键发现 ■ 架构框架使用集体见解来创建最佳实践&#xff0c;指导用户考虑组织风险和业务环境。这些方法的改编和定制&#xff0c;将帮助组织从中获得最佳价值。 ■ 方法论提供了一种系统工程方法&#xff0c;使用业务输入和期望&#xff0c;来创建可重复、可跟踪&#xf…

React16、18 使用 Redux

Redux 核心 Redux 介绍 Redux 是javaScript 状态容器&#xff0c;提供可预测化的状态管理 Redux 工作流程 Actions&#xff1a;对象&#xff0c;描述对状态进行怎样的操作 Reducer&#xff1a;函数&#xff0c;操作状态并返回新的状态 Store&#xff1a;存储状态的容器&am…

【面试】Redis的热key问题如何发现和解决?

文章目录 背景一、怎么发现热key1.1 方法一:凭借业务经验&#xff0c;进行预估哪些是热key1.2 方法二:在客户端进行收集1.3 方法三:在Proxy层做收集1.4 方法四:用redis自带命令1.5 方法五:自己抓包评估 二、如何解决2.1. 利用二级缓存2.2. 备份热key2.3 永不过期2.4 分布式锁 三…

分享5个和安全相关的 VSCode 插件

开发高质量的软件应用程序可能是艰巨的&#xff0c;因为许多组成部分必须协同工作才能创建出一个可运行的解决方案。这就是为什么开发人员需要尽可能获得所有帮助和便利&#xff0c;特别是在保护他们的应用程序时。 Visual Studio Code&#xff08;VSCode&#xff09;是最受欢迎…

redis高可用——主从复制、哨兵模式、cluster集群

1、redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cIustr群集 主从复制:主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的…

jenkins创建用户

一.背景 之前用了很多次&#xff0c;现在转到甲方爸爸的岗位&#xff0c;要培养大学毕业生&#xff0c;才发现好记性不如烂笔头。给年轻人写出来。 二.创建用户的过程 1.用户管理界面入口 Dashboard>Manage Jenkins>Jenkins own user database 2.点击右边的按钮“Cre…

Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用

官方 gitlab 文档 我的系统是 arm 架构的 ubuntu 官网没有提供 arm 架构的 docker 的 gitlab 的安装方式&#xff0c;直接安装的也是后来加的&#xff0c;文档也是随笔带过&#xff0c;&#xff0c;&#xff0c;我用到了&#xff0c;记录一下 默认已经安装了 docker 在 docker …

【STM32】常用存储器

常用存储器 RAM 存储器 RAM 是“Random Access Memory”的缩写&#xff0c;被译为随机存储器。所谓“随机存取”&#xff0c;指的是当存储器中的消息被读取或写入时&#xff0c;所需要的时间与这段信息所在的位置无关。而RAM可随读取其内部任意地址的数据&#xff0c;时间都是…

Android 12.0 禁用系统app首次启动动画SplashScreen功能分析

1.前言 在12.0的系统开发中,由于系统增加了新特性,在app首次启动的时候,添加了启动引导动画SplashScreen功能,所以会默认显示 app图标作为一张动画来过度,解决首次启动卡顿问题,接下来分析下看是怎么样添加的,然后禁用就可以了 如图: 2.禁用系统app首次启动动画SplashSc…

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题

可能是mybatisplus版本不兼容的问题&#xff0c;我之前用的3.4.0&#xff0c;springboot版本是3.1.3&#xff0c;maven版本是3.8.8&#xff0c;运行的时候报了这个错。现在修改了mybatisplus的版本&#xff0c;如下图&#xff1a; 这样就不报错了。 大家可以在这里找合适的my…

DGA行为转变引发了对网络安全的担忧

Akamai的研究人员发现&#xff0c;在域名系统(DNS)流量数据中&#xff0c;动态种子域生成算法(DGA)家族的行为发生了令人担忧的变化。这一发现揭示了恶意行为者如何调整他们的策略来延长他们的指挥与控制(C2)通信通道的寿命&#xff0c;以保护他们的僵尸网络。 从技术角度来看…