0、目的
- docker私有倉庫的搭建,方便后期的CI/CD
- dotnetcore項目sdk本地緩存,解決微軟官方下載緩慢的問題
- nuget私有倉庫
- 等
1、環境情況
- windows10
- Docker Desktop
2、在docker環境中安裝nexus3
#下載鏡像 docker pull sonatype/nexus3
3、啟動nexus3
docker run -d -p 8081:8081 -p 8082:8082 -p 8088:8088 -p 8090:8090 --name nexus3niu sonatype/nexus3
8081為nexus的web管理后台端口
8088為hosted私有docker倉庫push端口
8082為group拉取鏡像端口
8090備用
4、進入docker中,修改nexus的默認密碼
docker exec -it 77ab02acf9cf /bin/bash cd nexus-data/ bash-4.4$ cat admin.password dae2eaaa-a4ea-44cf-b754-aab10e999d1ebash-4.4$ exit #其中dae2eaaa-a4ea-44cf-b754-aab10e999d1e變為默認密碼,可以直接修改,也可以復制出來,到web端首次登陸成功后再修改
5、訪問http://127.0.0.1:8081,登陸用戶名和密碼即可登陸成功
6、nexus3關於docker倉庫的三種支持方式
hosted
: 本地存儲,即同 docker 官方倉庫一樣提供本地私服功能。proxy
: 提供代理其他倉庫的類型,如 docker 中央倉庫。group
: 組類型,實質作用是組合多個倉庫為一個地址。
7、分別通過web后台搭建三種類型的倉庫,具體如截圖
- 首先建立一個blob,用於存儲鏡像,實際生產環境建議磁盤大小500G左右
- 建立hosted
- 建立proxy
- 建立group
8、測試連接
docker login -u admin -p adminxxx 127.0.0.1:8088 #hosted docker login -u admin -p adminxxx 127.0.0.1:8082 #group #返回如下情況代表連接成功 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
9、測試拉取遠程鏡像到本地代理倉庫,注意先要登錄
docker pull 127.0.0.1:8082/redis #127.0.0.1:8082/為你的倉庫地址,redis為dockerhub官方里能找到的鏡像tag,如果錯誤,將拉取不成功 #拉取aspnetcore 5.0和sdk5.0,注意這里的newbe36524/aspnet:5.0-buster-slim即是tag
docker pull 127.0.0.1:8082/newbe36524/aspnet:5.0-buster-slim
docker pull 127.0.0.1:8082/newbe36524/sdk:5.0-buster-slim
執行成功后,可以到web后端看到已經存在鏡像了,下次會直接從本地倉庫拉取,速度會特別快
10、推送本地鏡像
docker tag webapplication3:dev 127.0.0.1:8088/webapplication3:latest docker push 127.0.0.1:8088/webapplication3:latest
注意group只可以拉取,不可以push推送,要在hosted上推送。group可以理解為統一暴露的pull拉取入口(里面可以包含很多個proxy、hosted)
11、關於vs的編譯慢的問題,可以修改dockerfile文件如下: