Rancher前奏--配置Nexus
一、安裝新版本Nexus
1.拉取鏡像
docker pull sonatype/nexus32.啟動容器
docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 -v /etc/localtime:/etc/localtime --name nexus3 sonatype/nexus33.開放端口
firewall-cmd --zone=public --permanent --add-port=8081/tcpfirewall-cmd --zone=public --permanent --add-port=8082/tcpfirewall-cmd --zone=public --permanent --add-port=8083/tcpsystemctl restart firewalld4.查看密碼
cd /opt/sonatype/sonatype-work/nexus3cat admin.password5.開機自啟
docker update --restart=always nexus36.訪問網址 http://ip:8081
二、配置docker私有倉庫
1.創建blob存儲
登陸之后,先創建一個用于存儲鏡像的空間
定義一個name,下邊的內容會自動補全。
然后保存即可。
2,創建一個hosted類型的docker倉庫
點擊步驟如下:
這里我們看到docker類型有三種:
hosted : 本地存儲,即同 docker 官方倉庫一樣提供本地私服功能。
proxy : 提供代理其他倉庫的類型,如 docker 中央倉庫。
group : 組類型,實質作用是組合多個倉庫為一個地址。
先來創建一個hosted類型的私有倉庫。
點擊 Repository下面的Repositories – Create repository – docker(hosted) :
Name: 定義一個名稱docker-local
Online: 勾選。這個開關可以設置這個Docker repo是在線還是離線。
Repository Connectors
?
3,創建一個proxy類型的docker倉庫
proxy類型倉庫,可以幫助我們訪問不能直接到達的網絡,如另一個私有倉庫,或者國外的公共倉庫,如官方的dockerhub鏡像庫。
創建一個proxy類型的倉庫
Name: proxy-docker-hub
Repository Connectors: 不設置。
Remote Storage: docker hub的proxy,https://8pf5a51j.mirror.aliyuncs.com這個是一個加速的鏈接
Docker Index: Use Docker Hub
Storage:idocker-hub
4.創建一個group類型的docker倉庫
group類型的docker倉庫,是一個聚合類型的倉庫。它可以將前面我們創建的3個倉庫聚合成一個URL對外提供服務,可以屏蔽后端的差異性,實現類似透明代理的功能。
name:docker-group
Repository Connectors:啟用了一個監聽在8181端口的http連接器;
Storage:選擇專用的blob存儲idocker-hub。
group?: 將左邊可選的3個倉庫,添加到右邊的members下。
三、測試
1.pull鏡像
[root@nexus ~]# docker pull redis Using default tag: latest latest: Pulling from library/redis 8559a31e96f4: Pull complete 85a6a5c53ff0: Pull complete b69876b7abed: Pull complete a72d84b9df6a: Pull complete 5ce7b314b19c: Pull complete 04c4bfb0b023: Pull complete Digest: sha256:800f2587bf3376cb01e6307afe599ddce9439deafbd4fb8562829da96085c9c5 Status: Downloaded newer image for redis:latest docker.io/library/redis:latest2.登錄私服
[root@nexus ~]# docker login -u admin -p admin idocker.io WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded3.push鏡像
docker push idocker.io/nginx其他服務器登錄nexus服務器需要做的配置
修改其他要訪問nexus的服務器的daemon.josn文件
vi /etc/docker/daemon.json添加如下內容: ??自己私服的ip地址
{"registry-mirrors": ["http://192.168.xxx.xxx"],"insecure-registries": ["http://192.168.xxx.xxx"]}然后重啟daemon
Systemctl daemon-reload再重啟docker
systemctl restart docker登錄私服
docker login 192.168.xxx.xxx四、Nginx分流
在此服務器上安裝nginx 做分流 配置拉取和推送鏡像的端口 這樣就拉取或者推送鏡像時 就可以直接寫192.168.xxx.xxx? 端口號就不用寫了
cd /etc/nginx/ vi nginx.conf修改為下面內容:
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events {worker_connections 1024; } http{ upstream nexus_docker_get {server 192.168.xxx.xxx:8181; } upstream nexus_docker_put {server 192.168.xxx.xxx:8182; } server {listen 80;listen 443 ssl;server_name idocker.io;access_log /var/log/nginx/idocker.io.log;# 證書ssl_certificate /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.crt; # 證書路徑根據上面生成的來定ssl_certificate_key /etc/nginx/conf.d/ssl/out/idocker.io/idocker.io.key.pem;ssl_protocols TLSv1.1 TLSv1.2;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 uploadsclient_max_body_size 0;# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)chunked_transfer_encoding on;# 設置默認使用推送代理set $upstream "nexus_docker_put";# 當請求是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;}nginx -t測試配置文件修改后的語法是否正確
使用命令nginx -s reload命令重啟讓配置文件生效
五、賬號分配
?
總結
以上是生活随笔為你收集整理的Rancher前奏--配置Nexus的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的数据结构
- 下一篇: Rancher搭建集群