首页 > 其他分享 >nexus3 作为docker仓库与镜像缓存的记录

nexus3 作为docker仓库与镜像缓存的记录

时间:2023-10-29 14:32:31浏览次数:40  
标签:缓存 nexus regist ssl nexus3 proxy docker k8s

因为搞k8s 拉取镜像太慢,不同版本每次都要等待半天 ,用nexus3作为docker镜像的缓存与仓库镜像,虽然权限控制弱一些,够用,记录用法及踩坑。


1 作为镜像缓存,唯一的坑,就是第一次拉取及后续拉取镜像,没有缓存,也不晓得为啥配置了 insecure-registries 和 registry-mirrors 没生效,iftop 观察流量走向连接到公网镜像了,不是指定的 192.168.9.132:8082 ,但是tag前缀加上ip:port/image:lastest , 镜像缓存了起作用了,后续直接 docker pull img:latest 就可以,否则就是换其他nexus3 版本也没有用,也不知道为什么

2 用nginx统一端口pull和push,方便使用

具体实操如下:

132_server 启用docker 来启动nexus3

mkdir -pv /data/nexus-data
chmod 777 -R /data/nexus-data

docker run --restart=always -d --net=host  \
 --privileged=true \
-e INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx256m -XX:MaxDirectMemorySize=256m \
--name nexus3 -v /data/nexus-data:/nexus-data sonatype/nexus3

查看随机生成的密码
docker exec nexus3 cat /nexus-data/admin.password

启动之后,登陆修改密码

先配置存储, dockerhub 与 dockerhosted, 用默认的也没问题,分开来分别区分和备份

nexus3 作为docker仓库与镜像缓存的记录_记录

配置dockerproxy

nexus3 作为docker仓库与镜像缓存的记录_nexus3_02

nexus3 作为docker仓库与镜像缓存的记录_记录_03

配置了一个第三方的代理

nexus3 作为docker仓库与镜像缓存的记录_docker_04

nexus3 作为docker仓库与镜像缓存的记录_镜像与仓库_05

docker_group 聚合,把2个代理都放入这个组,docker_hosted 也可以放入该组,但是可以拉取,不能push

nexus3 作为docker仓库与镜像缓存的记录_记录_06

配置docker私有仓库

nexus3 作为docker仓库与镜像缓存的记录_记录_07

DNS 配置A记录 或者 hosts 配置 

192.168.9.132  regist.k8s.in

docker客户端

root@vm-133:~# cat /etc/docker/daemon.json 
{
        "insecure-registries": ["regist.k8s.in"],
        "registry-mirrors": ["http://regist.k8s.in"]
}

systemctl restart docker.socket docker.service

pull 可以匿名,但是要在nexus3上启用docker安全,push需要账号密码

nexus3 作为docker仓库与镜像缓存的记录_nexus3_08

nexus3 作为docker仓库与镜像缓存的记录_docker_09

docker login -u admin -p admin#123  regist.k8s.in
第一次一定要 docker pull  regist.k8s.in/ubuntu:lastest
否则拉取可能不走指定的 regist.k8s.in ,后续就没有问题了 docker pull nginx 就有缓存了

nexus3 作为docker仓库与镜像缓存的记录_记录_10

nexus3 作为docker仓库与镜像缓存的记录_nexus3_11

nexus3 作为docker仓库与镜像缓存的记录_docker_12

nexus3 作为docker仓库与镜像缓存的记录_记录_13

nginx 配置域名,统一对外端口

upstream nexus_docker_get {
    server 192.168.9.132:8082;
}

upstream nexus_docker_put {
    server 192.168.9.132:8084;
}
server {
    listen 80;
    listen 443 ssl;
    server_name regist.k8s.in;
    access_log /var/log/nginx/regist,k8s.in.log;
    ssl_certificate /etc/nginx/ssl/k8s.in.crt;
    ssl_certificate_key /etc/nginx/ssl/k8s.in.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers '!aNULL:kECDH+AESGCM:ECDH+AESGCM:RSA+AESGCM:kECDH+AES:ECDH+AES:RSA+AES:';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    # disable any limits to avoid HTTP 413 for large image uploads
    client_max_body_size 0;
    # required to avoid HTTP 411
    chunked_transfer_encoding on;
    # default  set push proxy
    set $upstream "nexus_docker_put";
    # When request_method is get
    if ( $request_method ~* 'GET') {
        set $upstream "nexus_docker_get";
    }
    # 只有本地仓库才支持搜索,所以将搜索请求转发到本地仓库,否则出现500报错
    if ($request_uri ~ '/search') {
        set $upstream "nexus_docker_put";
    }
    index index.html index.htm index.php;
    location / {
        proxy_pass http://$upstream;
        proxy_set_header Host $host;
        proxy_connect_timeout 3600;
        proxy_send_timeout 3600;
        proxy_read_timeout 3600;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
}

标签:缓存,nexus,regist,ssl,nexus3,proxy,docker,k8s
From: https://blog.51cto.com/first01/8080385

相关文章

  • 收藏从未停止,练习从未开始——MYSQL游标存储过程IDEA快捷键配置SpringBoot入门到入土G
    “收藏从未停止,练习从未开始”,或许有那么一些好题好方法,在被你选中收藏后却遗忘在收藏夹里积起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!本人详解:(提醒:随笔)本人详解作者:王文峰,参加过2020年度博客之星,《Java王大师王天师》作者采购供应链共享......
  • 【SpringBoot】Docker部署
    docker部署是主流的部署方式,极大的方便了开发部署环境,保持了环境的统一,也是实现自动化部署的前提。1项目的目录结构package:点击打包,生成xxx-SNAPSHOT.jartarget目录:打包生成目录,生成的jar存放位置Dockerfile:跟项目根目录同级2创建Dockerfile#Docker镜像构......
  • SpringBoot使用Redis分布式缓存
    Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基......
  • Cannot connect to the Docker
    执行docker基础命令失败!CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.Isthedockerdaemonrunning?原因:docker服务没有启动。解决方法:执行systemctlstartdocker即可。......
  • thymeleaf引用JS加随机数防止缓存
    一、运行环境1、Thymeleaf2.2.22、SpringBoot2.6.4二、实际代码<scriptth:src="@{/back/js/cloud/manageAddress.js(__${#httpServletRequest.getSession().getId()}__)}"></script>说点废话。都说ChatGPT智能,至少我感觉3.5一般国内有人搭建了要收费 其实ChatGPT对写代码还是......
  • redis缓存更新策略,缓存穿透,缓存雪崩,缓存击穿。封装redis工具类
    (redis缓存)缓存是存储数据的临时地方,一般读写性能高1.给商铺添加缓存思路:在对应的serviceImpl里写逻辑@OverridepublicResultqueryById(Longid){Stringkey=CACHE_SHOP_KEY+id;//1.从redis查询商铺缓存StringshopJSON=stringRedisTemplate.opsF......
  • Linux 下使用 Docker 安装 Redis
    1、下载redisdockerpullredis:6.2.62、提前创建挂载目录mkdir-p/mydata/redis/confmkdir-p/mydata/redis/datamkdir-p/mydata/redis/logtouch/mydata/redis/conf/redis.conftouch/mydata/redis/log/redis.logchmod777/mydata/redis/log/redis.log3、启......
  • docker容器成为新镜像
     dockerps打开终端并运行以下命令,以获取你要创建新镜像的容器的ID。使用dockercommit命令创建新镜像:dockercommit<container-id><new-image-name>dockercommitd47ae73c6ded chatdb-ai验证新镜像:dockerimages  上传到阿里云#需要先登录dockerlogin-......
  • docker的安装、配置与使用
    docker的安装、配置与使用问题1:安装docker后卡在"startingthedockerengine"解决方法:按Win键,输入Hyper-V,在“启用或关闭Windows功能”中启用Hyper-V。如果没有解决,还需要在Docker窗口右上登录账户。之后重启Docker。Push镜像的注意事项首次push需要登录(Linux系统用指......
  • 安装docker
    docker_install.sh#!/bin/bashbase_path=$(cd"$(dirname"$0")"||exit1pwd)functiondownload_jq(){wget"https://github.com/jqlang/jq/releases/download/${jq_tag}/jq-linux-amd64"-P$base_path}function......