<二>企業級開源倉庫nexus3實戰應用–使用nexus3配置docker私有倉庫


1,安裝nexus3。

這個地方略了,安裝部署可以參考:nexus3安裝配置。

2,配置走起。

1,創建blob存儲。

登陸之后,先創建一個用於存儲鏡像的空間。

定義一個name,下邊的內容會自動補全。

然后保存。

這里因為我用的測試服務器演示,因此存儲沒有那么大,實際生產中使用,建議服務器存儲500G或以上。

2,創建一個hosted類型的docker倉庫。

Hosted類型倉庫用作我們的私有倉庫,替代harbor的功能。

點擊步驟如下:

而后可見:

所支持種類之豐富,可見一斑。

這里我們看到docker類型有三種:

  • hosted : 本地存儲,即同 docker 官方倉庫一樣提供本地私服功能。
  • proxy : 提供代理其他倉庫的類型,如 docker 中央倉庫。
  • group : 組類型,實質作用是組合多個倉庫為一個地址。

我們先來創建一個hosted類型的私有倉庫。

點擊 Repository下面的 Repositories – Create repository – docker(hosted) :

  • Name: 定義一個名稱docker-local
  • Online: 勾選。這個開關可以設置這個Docker repo是在線還是離線。
  • Repository Connectors
      下面包含HTTP和HTTPS兩種類型的port。

 

      有什么用呢?說明講得很清楚:

 

連接器允許docker客戶端直接連接到docker倉庫,並實現一些請求操作,如docker pull, docker push, API查詢等。但這個連接器並不是一定需要配置的,尤其是我們后面會用group類型的docker倉庫來聚合它。

我們把HTTP這里勾選上,然后設置端口為8083。

  • Force basic authentication
  • 勾選。這樣的話就不允許匿名訪問了,執行docker pull或 docker push之前,都要先登錄:docker login
  • Docker Registry API Support
    Docker registry默認使用的是API v2, 但是為了兼容性,我們可以勾選啟用API v1。
  • Storage
  • Blob store:我們下拉選擇前面創建好的專用blob:idocker-hub。
  • Hosted
    開發環境,我們運行重復發布,因此Delpoyment policy 我們選擇Allow redeploy。

整體配置截圖如下:

3,創建一個proxy類型的docker倉庫。

proxy類型倉庫,可以幫助我們訪問不能直接到達的網絡,如另一個私有倉庫,或者國外的公共倉庫,如官方的dockerhub鏡像庫。

創建一個proxy類型的倉庫

  • Name: proxy-docker-hub
  • Repository Connectors: 不設置。
  • Proxy

Remote Storage

      : docker hub的proxy,這里填寫: 

https://registry-1.docker.io

      這個是官方默認的一個鏈接,我這里配置使用

DaoCloud

      的容器加速:

http://f1361db2.m.daocloud.io

  • Docker Index: Use Docker Hub
  • Storage:idocker-hub

整體配置截圖如下:

4,創建一個group類型的docker倉庫。

group類型的docker倉庫,是一個聚合類型的倉庫。它可以將前面我們創建的3個倉庫聚合成一個URL對外提供服務,可以屏蔽后端的差異性,實現類似透明代理的功能。
  • name:docker-group
  • Repository Connectors:啟用了一個監聽在8082端口的http連接器;
  • Storage:選擇專用的blob存儲idocker-hub。
  • group : 將左邊可選的3個倉庫,添加到右邊的members下。

整體配置截圖如下:

到這兒,nexus3的配置算是完成了,接下來就是使用方面的事情了。

3,小插曲。

大家也看到了上邊的截圖都是比較長的,這幾張圖來的並不容易。在獲取這些圖的過程中,我嘗試過自己御用的截圖工具,也嘗試過Chrome的網頁截圖,還嘗試過其他的各種截圖工具,無論是截全屏,還是滾動截圖,無所不用其極,卻無一能夠截出令自己滿意的圖,哎,都是完美主義(強迫症)做的怪,於是,趁着公司已經夜深無人,我最終通過如下方式截到了心儀的長圖。

不為別的,只為把所分享的東西做的足夠精致。當然,各位觀眾朋友如果有更好的截圖工具,並且在nexus3這個界面里截出了像我截的那么長的圖的話,歡迎在評論區留言分享。

4,常規方式使用。

請注意,這種方式經我測試,總是失敗,原因還沒查出來。如果有人知道原因是什么,麻煩留言區告知一下。

1,配置

配置/etc/docker/daemon.json, 由於不是https,所以要在daemon.json中配置一下:

  1. { "insecure-registries":["192.168.157.110:8082"] }

2,重啟docker。

  1. $systemctl daemon-reload
  2. $systemctl restart docker

3,pull鏡像。

  1. docker pull redis

4,登陸私服。

  1. docker login -u admin -p admin123 192.168.157.110:8082

5,打標簽。

  1. docker tag docker.io/redis 192.168.157.110:8082/redis

6,push鏡像。

  1. [root@docker ~]$docker push 192.168.157.110:8082/redis
  2.  
  3. 然后報錯:
  4.  
  5. The push refers to a repository [192.168.157.110:8082/redis]
  6. 902afb26cfff: Layer already exists
  7. 21497520b817: Layer already exists
  8. a3514b4102be: Layer already exists
  9. 714e32c05337: Layer already exists
  10. d98fb630fb3b: Layer already exists
  11. 8b15606a9e3e: Layer already exists
  12. error parsing HTTP 404 response body: unexpected end of JSON input: ""

暫時不知這個報錯問題的原因是什么,因為最終沒有采用這種方式,所以沒有深入探究。

5,nginx代理方式。

以下內容參考張戈博客,中有刪改。

在部署 Nginx 部分,我們先需要生成自簽名 SSL 證書,因為后面不想在 docker pull 的時候還要帶一個端口!這里我們需要 2 個域名,一個用來展示 nexus 前台,另一個用做 docker 倉庫,比如:

  • nexus 前台:repo.ald.com
  • docker 倉庫:idocker.io

1,安裝nginx。

先通過curl 192.168.106.10/a | sh安裝nginx。

2,生成證書。

生成自簽名 SSL 證書的方法網上很多,這里推薦一個一鍵生成工具,大家可以嘗試使用:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM