当前位置: 代码网 > it编程>编程语言>Java > 【Docker】解决访问难题:搭建私有的Docker镜像代理

【Docker】解决访问难题:搭建私有的Docker镜像代理

2024年08月06日 Java 我要评论
Nexus 3是由Sonatype公司开发的一款强大的包管理和仓库服务工具,它广泛应用于自动化的构建系统和持续集成/持续部署(CI/CD)流程中。Nexus 3支持多种包格式,包括但不限于Maven、npm、Docker、NuGet等,能够为软件开发中的依赖管理提供一站式解决方案。

什么是nexus 3

nexus 3是由sonatype公司开发的一款强大的包管理和仓库服务工具,它广泛应用于自动化的构建系统和持续集成/持续部署(ci/cd)流程中。nexus 3支持多种包格式,包括但不限于maven、npm、docker、nuget等,能够为软件开发中的依赖管理提供一站式解决方案。

主要特点

多种格式支持:nexus 3能够管理多种格式的二进制文件和源代码包,适用于不同编程语言和构建工具。
代理和托管仓库:nexus 3允许用户创建代理仓库来缓存远程仓库中的组件,同时也可以创建托管仓库用于存储和管理内部生成的组件。
安全性和权限管理:nexus 3提供细粒度的权限控制,支持与外部用户管理系统(如ldap)集成,确保仓库的安全访问。
高可用性和大规模部署:支持高可用性部署配置,能够处理大量的请求和存储大量的组件,适合大规模企业环境。
仓库健康检查和优化:提供仓库健康检查工具和数据优化工具,帮助维护仓库的稳定性和效率。
界面和集成:提供了一个用户友好的界面,方便用户管理仓库和组件。同时,nexus 3可以与jenkins、bamboo等ci/cd工具集成,优化开发流程。

代理仓库概念

代理仓库在 nexus 3 中扮演着至关重要的角色,它主要用于以下几个方面:
缓存远程依赖:代理仓库可以缓存从远程仓库(如 maven 中央仓库)下载的依赖,减少对原始源的直接访问,加快本地访问速度。
网络优化:通过减少对远程源的访问,代理仓库有助于降低跨境访问延迟和带宽消耗。
依赖隔离:在网络不稳定或远程源不可用时,代理仓库可以作为依赖的备份源,保证构建的连续性。
访问控制:可以对代理仓库设置访问权限,控制谁可以下载或上传依赖。

代理仓库工作原理

在这里插入图片描述

部署方式

nexus 3可以通过多种方式部署,包括传统的安装包方式、docker容器化部署,以及kubernetes等容器编排平台。容器化部署提供了更高的灵活性和可移植性,使得nexus 3可以轻松地在不同环境中运行。

部署

安装:

  1. 登录1panel后再应用商店中找到 nexus repository, 点击安装
    在这里插入图片描述

  2. 确认应用端口是否被占用,如果有就修改一个没有被占用的,启用端口外部访问
    在这里插入图片描述

  3. 等待nexus的安装
    在这里插入图片描述

  4. 等到状态变成绿色的已启动后,选择边上的文件夹图标,进入安装目录
    在这里插入图片描述

  5. 点击进入data目录后,找到admin.password这个文件并打开,里面是nexus的admin初始密码

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

初始化配置

  1. 输入 http://ip:8080访问nexus 3,然后点右上角进行登录,用户名为 admin,密码在 admin.password获得。
    在这里插入图片描述在这里插入图片描述

  2. 根据引导修改管理员密码,并启用匿名访问。
    在这里插入图片描述
    在这里插入图片描述

设置docker镜像代理

  1. 打开设置 >> security >> roles >> create role
    在这里插入图片描述

  2. 然后按照如下填写
    在这里插入图片描述
    在这里插入图片描述

  3. 打开设置 >> security >> users,找到 anonymoususer这个用户进行编辑,并添加 dockerpullanonymous这个权限。
    在这里插入图片描述在这里插入图片描述

  4. 继续打开设置 >> security >> realms,添加 dockerbearertokenrealm这个权限并保存。
    在这里插入图片描述

  5. 打开设置 >> repositories >> create repository我们开始创建一个docker镜像仓库。
    在这里插入图片描述

  6. 然后选择 docker (proxy)
    在这里插入图片描述

  7. 注意下方红框标注的地方(remote storage填写 https://registry-1.docker.io 或其他可以访问的docker镜像库)
    在这里插入图片描述

  8. 查看docker (proxy) 的url
    在这里插入图片描述

设置反向代理并启用https

在执行docker pull操作时,为了满足docker官方的要求,即目标镜像地址必须通过https协议进行访问,我们可以采用以下步骤来配置nginx作为反向代理服务器,以便通过nexus 3连接并使用自定义域名支持https访问。当然你有其他方式也是可以的。具体的 nginx 配置如下所示:

server {

    listen 80;

    server_name hub.xxx.com; # 填写你的域名

    rewrite ^(.*) https://hub.xxx.com$1 permanent;

}

server {

    listen 443 ssl http2;

    server_name hub.xxx.com; # 填写你的域名

    ssl_certificate /data/ssl/hub.xxx.com.crt; # 改成你的ssl证书

    ssl_certificate_key /data/ssl/hub.xxx.com.key; # 改成你的ssl私钥

    ssl_session_timeout 1d;

    ssl_session_cache shared:mozssl:10m;  # about 40000 sessions

    ssl_session_tickets off;

    # intermediate configuration

    ssl_protocols tlsv1.2 tlsv1.3;

    ssl_ciphers ecdhe-ecdsa-aes128-gcm-sha256:ecdhe-rsa-aes128-gcm-sha256:ecdhe-ecdsa-aes256-gcm-sha384:ecdhe-rsa-aes256-gcm-sha384:ecdhe-ecdsa-chacha20-poly1305:ecdhe-rsa-chacha20-poly1305:dhe-rsa-aes128-gcm-sha256:dhe-rsa-aes256-gcm-sha384;

    ssl_prefer_server_ciphers off;

    # hsts (ngx_http_headers_module is required) (63072000 seconds)

    add_header strict-transport-security "max-age=63072000" always;

    # ocsp stapling

    ssl_stapling on;

    ssl_stapling_verify on;

    location / {

          client_max_body_size  64m;

          proxy_http_version 1.1;

          proxy_pass http://ip:8081/repository/docker/;  # 改成你的nexus 3上docker (proxy) 的url

          proxy_set_header host $host;

          proxy_set_header x-forwarded-for $remote_addr;

          proxy_set_header x-forwarded-proto $scheme;

          proxy_connect_timeout 60s;

            proxy_send_timeout 60s;

            proxy_read_timeout 300s;

            send_timeout 60s;

            proxy_buffers 16 32k;

            proxy_buffer_size 64k;

            proxy_set_header connection "";

   }

}

测试

接下来在服务器使用命令 docker pull hub.xxx.com/helloz/onenav拉取镜像测试,可以成功拉取,说明配置成功了。
在这里插入图片描述

结论

nexus 3 的代理仓库功能是其核心优势之一,为企业提供了一个高效、可靠且安全的依赖管理解决方案。在当前许多公开的docker镜像加速地址不可用,以及官方docker镜像源在国内受限的背景下,自行搭建docker镜像代理显得尤为重要,当然还有一个大前提,你可以科学上网或者有海外资源。本文详细介绍了如何利用nexus 3这一功能,搭建起一个适合个人或团队使用的docker镜像代理服务。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com