nexus3 作为docker仓库与镜像缓存的记录
  mPcyh9OXzYGu 2023年11月05日 58 0

因为搞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仓库与镜像缓存的记录_nexus3

配置dockerproxy

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

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

配置了一个第三方的代理

nexus3 作为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仓库与镜像缓存的记录_镜像与仓库_08

nexus3 作为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仓库与镜像缓存的记录_nexus3_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;
    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   30   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   31   0   0 Docker
  LE2wsiBPlOhg   2023年12月06日   31   0   0 Dockercentos
  DnoStTHsc0vp   2023年12月11日   24   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   99   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   33   0   0 Dockercentos
mPcyh9OXzYGu