1,安裝nexus3。
這個地方略了,安裝部署可以參考:nexus3安裝配置。
2,配置走起。
1,創建blob存儲。
登陸之后,先創建一個用於存儲鏡像的空間。
定義一個name,下邊的內容會自動補全。
然后保存。
這里因為我用的測試服務器演示,因此存儲沒有那么大,實際生產中使用,建議服務器存儲500G或以上。
2,創建一個hosted類型的docker倉庫。
點擊步驟如下:
而后可見:
所支持種類之豐富,可見一斑。
這里我們看到docker類型有三種:
hosted
: 本地存儲,即同 docker 官方倉庫一樣提供本地私服功能。proxy
: 提供代理其他倉庫的類型,如 docker 中央倉庫。group
: 組類型,實質作用是組合多個倉庫為一個地址。
我們先來創建一個hosted類型的私有倉庫。
點擊 Repository
下面的 Repositories
– Create repository – docker(hosted)
:
Name
: 定義一個名稱docker-localOnline
: 勾選。這個開關可以設置這個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類型的倉庫
Name
: proxy-docker-hubRepository Connectors
: 不設置。Proxy
Remote Storage
-
: docker hub的proxy,這里填寫:
-
這個是官方默認的一個鏈接,我這里配置使用
-
的容器加速:
Docker Index
: Use Docker HubStorage
:idocker-hub
整體配置截圖如下:
4,創建一個group類型的docker倉庫。
name
:docker-groupRepository Connectors
:啟用了一個監聽在8082端口的http連接器;Storage
:選擇專用的blob存儲idocker-hub。group
: 將左邊可選的3個倉庫,添加到右邊的members下。
整體配置截圖如下:
到這兒,nexus3的配置算是完成了,接下來就是使用方面的事情了。
3,小插曲。
大家也看到了上邊的截圖都是比較長的,這幾張圖來的並不容易。在獲取這些圖的過程中,我嘗試過自己御用的截圖工具,也嘗試過Chrome的網頁截圖,還嘗試過其他的各種截圖工具,無論是截全屏,還是滾動截圖,無所不用其極,卻無一能夠截出令自己滿意的圖,哎,都是完美主義(強迫症)做的怪,於是,趁着公司已經夜深無人,我最終通過如下方式截到了心儀的長圖。
不為別的,只為把所分享的東西做的足夠精致。當然,各位觀眾朋友如果有更好的截圖工具,並且在nexus3這個界面里截出了像我截的那么長的圖的話,歡迎在評論區留言分享。
4,常規方式使用。
請注意,這種方式經我測試,總是失敗,原因還沒查出來。如果有人知道原因是什么,麻煩留言區告知一下。
1,配置
配置/etc/docker/daemon.json
, 由於不是https,所以要在daemon.json中配置一下:
- { "insecure-registries":["192.168.157.110:8082"] }
2,重啟docker。
- $systemctl daemon-reload
- $systemctl restart docker
3,pull鏡像。
- docker pull redis
4,登陸私服。
- docker login -u admin -p admin123 192.168.157.110:8082
5,打標簽。
- docker tag docker.io/redis 192.168.157.110:8082/redis
6,push鏡像。
- [root@docker ~]$docker push 192.168.157.110:8082/redis
- 然后報錯:
- The push refers to a repository [192.168.157.110:8082/redis]
- 902afb26cfff: Layer already exists
- 21497520b817: Layer already exists
- a3514b4102be: Layer already exists
- 714e32c05337: Layer already exists
- d98fb630fb3b: Layer already exists
- 8b15606a9e3e: Layer already exists
- 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 證書的方法網上很多,這里推薦一個一鍵生成工具,大家可以嘗試使用: