nexus搭建私有docker倉庫的方法
一、背景
Nexus之前已支持了maven/npm/composer,由于docker倉庫和前面幾個存在比較大的差異,所以我特此記錄下走過的坑。希望能對后來者有所幫助~~(當然,docker私有倉庫,大多數(shù)是推薦使用harbor,因為我這里的某些歷史原因,就沿用nexus)
二、建立倉庫
依次建立代理倉庫、私有倉庫、組合倉庫。
需要注意的有以下幾點:
- 代理倉庫可以添加多個
- 私有倉庫和組合倉庫的端口號,必須暴露出去
- 組合倉庫需要把代理倉庫和私有倉庫組合起來
先建立好存儲空間:
2.1、代理倉庫
https://nbi3meca.mirror.aliyuncs.com
2.2、私有倉庫(既可以pull鏡像,又可以push鏡像)
2.3、組合倉庫(僅限于pull鏡像)
這里的順序是:先二方庫私有庫,再是三方庫代理庫。
三、添加權(quán)限
四、docker客戶端
4.1、配置
{ # 對應(yīng)組合倉庫的ip和端口 "registry-mirrors": ["http://192.168.5.6:8087"], # 需要把組合倉庫和私有倉庫都加入進來 # 因為在推送鏡像的時候是使用私有倉庫,在拉取鏡像的時候是使用組合倉庫 "insecure-registries": [ "192.168.5.6:8086", "192.168.5.6:8087"] }
重啟,使配置生效
systemctl daemon-reload && systemctl restart docker
4.2、登錄并保存認證
docker login 192.168.5.6:8086 -u admin -p 123456 docker login 192.168.5.6:8087 -u admin -p 123456
cat ~/.docker/config.json
{ "auths": { "192.168.5.6:8086": { "auth": "YWRtaW46MTIzNDU2" }, "192.168.5.6:8087": { "auth": "YWRtaW46MTIzNDU2" }, "harbor.xx.cloud": { "auth": "YWRtaW46SGFyYm9xMTIzNDU=" } } }
好處是不用重復(fù)認證,你可以使用如下方法進行解密。
echo -n "YWRtaW46MTIzNDU2" | base64 -d echo -n "YWRtaW46SGFyYm9xMTIzNDU=" | base64 -d
同理,你更可以進行主動加密。
echo -n 'admin:123456' | base64
五、推送和拉取鏡像
推送鏡像
# 給構(gòu)建好的image進行打tag docker tag xxx/devops-service:1.0.7 192.168.5.6:8086/xxx/devops-service:1.0.7 # 推送到指定的docker倉庫 docker push 192.168.5.6:8086/xxx/devops-service:1.0.7
拉取鏡像
docker pull 192.168.5.6:8086/xxx/devops-service:1.0.7
六、總結(jié)
6.1、走過的坑一:連接拒絕
沒有暴露8086和8087端口
nexus是使用docker搭建的,需要進行一番修改。
[root@maven3 ~]# vi docker-compose.yml version: '3' services: nexus: restart: always image: sonatype/nexus3 # image: docker.io/sonatype/nexus3 container_name: nexus3 ports: - 8081:8081 - 8082:8082 - 8083:8083 - 8084:8084 - 8085:8085 # 新增8086和8087兩個端口號 - 8086:8086 - 8087:8087 volumes: - /opt/nexus:/opt/sonatype/nexus:Z - /data/nexus-data:/nexus-data:Z
重啟nexus
[root@maven3 ~]# docker-compose down Stopping nexus3 ... done Removing nexus3 ... done Removing network root_default [root@maven3 ~]# docker-compose up -d Creating network "root_default" with the default driver Creating nexus3 ... done [root@maven3 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 99f41bdf4993 sonatype/nexus3 "sh -c ${SONATYPE_..." 14 seconds ago Up 13 seconds 0.0.0.0:8081-8087->8081-8087/tcp nexus3
確保8086和8087端口都暴露出去了
6.2、404 Not Found
是因為沒有Realms:Docker Bearer Token Realm進行激活。
六、說在最后的話
- 一定要弄清楚端口號
- docker倉庫和npm/maven/composer的差異甚大
到此這篇關(guān)于nexus搭建私有docker倉庫的文章就介紹到這了,更多相關(guān)docker私有倉庫搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用docker創(chuàng)建集成服務(wù)lnmp環(huán)境
本篇文章主要介紹了使用docker創(chuàng)建集成服務(wù)lnmp環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04MySQL容器中docker-entrypoint-initdb.d目錄的使用
這篇文章主要介紹了MySQL容器中docker-entrypoint-initdb.d目錄的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05IDEA使用Docker插件遠程部署項目到云服務(wù)器的方法步驟
這篇文章主要介紹了IDEA使用Docker插件遠程部署項目到云服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12docker Get https://registry-1.docker.io/v2/:
本文主要介紹了docker Get https://registry-1.docker.io/v2/: net/http: request canceled 報錯,具有一定的參考價值,感興趣的可以了解一下2025-03-03