欢迎光临
我们一直在努力

使用nexus3搭建自己的制品服务器

使用nexus3搭建自己的制品服务器

需求

云原生开发,有个新的需求,就是docker制品服务器,对于私域的开发,公有云的服务器不合适,只能自己搭建了。

所以记录一下搭建一个docker镜像服务器的过程,完成的功能如下:

  • 存储私有的docker制品,所有有上传下载功能(pull,push)
  • 代理开源的共有源镜像(dockerhub)
  • 读写权限分开
  • 使用nexus3大家私服过程

    nexus3是目前最全面的私服软件了,支持apt、npm、docker、cargo、go、maven、composer…… 这次只使用其docker功能。

    使用docker搭建nexus3,并使用caddy作为代理: nexus3的配置:

    services:
    nexus3:
    image: sonatype/nexus3:latest
    container_name: nexus3
    environment:
    TZ=Asia/Shanghai
    INSTALL4J_ADD_VM_PARAMS="Xms2703m Xmx4G XX:MaxDirectMemorySize=2703m Djava.util.prefs.userRoot=/userroot"
    NEXUS_CONTEXT=nexus
    volumes:
    ./data:/nexusdata
    ./userroot:/userroot
    restart: always

    networks:
    default:
    external: true
    enable_ipv6: false
    name: netproxy

    caddy的配置:

    services:
    caddy:
    image: caddy:2
    restart: unlessstopped
    container_name: caddy
    cap_add:
    NET_ADMIN
    environment:
    TZ=Asia/Shanghai
    ports:
    "80:80"
    "8080:8080"
    "443:443"
    "443:443/udp"
    "1443:1443"
    "1443:1443/udp"
    volumes:
    $PWD/conf:/etc/caddy
    $PWD/site:/srv
    $PWD/config:/config
    $PWD/data:/data
    networks:
    netproxy

    networks:
    netproxy:
    name: netproxy
    driver: bridge

    caddy配置文件:

    {
    email Littlebaby@163.com
    acme_ca https://acme.zerossl.com/v2/DV90
    }

    nexus.aaa.bbb {
    redir / /nexus 301

    reverse_proxy nexus3:8081
    encode gzip
    header CacheControl "public, maxage=3600"

    header {
    StrictTransportSecurity "maxage=31536000; includeSubDomains; preload"
    XContentTypeOptions "nosniff"
    XXSSProtection "1; mode=block"
    }
    }

    docker.aaa.bbb:1443 {
    reverse_proxy nexus3:8082
    }

    docker.aaa.bbb {
    reverse_proxy nexus3:8084
    }

    搭建支持上传下载的docker私服

    nexus3第一次启动后,需要修改密码,如下图: 请添加图片描述

    修改密码后,后续会提示是否开通匿名访问,关闭。

    新建一个host的docker repository

    目录: settings->repository->create repository

    请添加图片描述

    新建一个支持上传下载的角色和用户
  • 新建角色
  • 请添加图片描述

    并且赋权刚刚创建的host仓库给这个角色。

  • 新建用户
  • 新建用户,并且赋角色 请添加图片描述

  • security realms
  • 安全配置:

    请添加图片描述

    验证读写

    # docker 登录
    docker login docker.aaa.bbb:1443 -u dwrite

    # 测试上传
    docker tag caddy:2 docker.aaa.bbb:1443/myimage:2
    docker push docker.aaa.bbb:1443/myimage:2

    请添加图片描述

    上传后就可以看到上传的镜像: 请添加图片描述

    搭建dockerhub 代理

    代理dockerhub:

    请添加图片描述

    修改端口、索引:

    请添加图片描述

    设置清理措施:

    代理镜像位于dockerhub,代理服务器只需要缓存,并不需要长久存储,指定一个释放策略可以减少服务器硬盘占用。

    创建清理策略:

    请添加图片描述

    给代理仓库加载清理策略:

    请添加图片描述

    搭建融合镜像

    仓库组,用来合并多个hosted/proxy仓库,即将私服和公开的hub代理,合并为一个,方便使用:

    请添加图片描述

    设置合并的仓库,并设置顺序,host在前,代理在后:

    请添加图片描述

    新建一个新只读角色、只读用户,赋权限,所有仓库的只读权限:

    角色:

    请添加图片描述

    用户:

    请添加图片描述

    权限:

    请添加图片描述

    测试
  • 拉取一个私服里面的镜像
  • 拉取一个dockerhub里面的镜像
  • # 登录
    docker login docker.aaa.bbb -u dread

    # 拉取私服的镜像
    docker rmi docker.aaa.bbb/myimage:2

    # 拉取dockerhub的镜像
    docker pull docker.aaa.bbb/alpine

    请添加图片描述

    查看,dockerhu的也会被缓存下来:

    请添加图片描述

    学习小结:

    至此,一个可用的权限分离的docker私服就实现了。nexus3一共有4个服务端口:

    8081:可以通过http访问nexus应用 8082:docker(hosted)私有仓库,可以pull和push 8083:docker(proxy) 代理dockerhub,只能pull 8084:docker(group) 私有仓库和代理的组,只能pull

    nexus3还有很多的私服功能,下次再开发_

    微信公众号: 使用nexus3搭建自己的制品服务器

    赞(0)
    未经允许不得转载:171主机测评 » 使用nexus3搭建自己的制品服务器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址