nexus搭建私有docker倉庫的方法
一、背景
Nexus之前已支持了maven/npm/composer,由于docker倉庫和前面幾個(gè)存在比較大的差異,所以我特此記錄下走過的坑。希望能對后來者有所幫助~~(當(dāng)然,docker私有倉庫,大多數(shù)是推薦使用harbor,因?yàn)槲疫@里的某些歷史原因,就沿用nexus)
二、建立倉庫
依次建立代理倉庫、私有倉庫、組合倉庫。
需要注意的有以下幾點(diǎn):
- 代理倉庫可以添加多個(gè)
- 私有倉庫和組合倉庫的端口號,必須暴露出去
- 組合倉庫需要把代理倉庫和私有倉庫組合起來

先建立好存儲(chǔ)空間:

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"],
# 需要把組合倉庫和私有倉庫都加入進(jìn)來
# 因?yàn)樵谕扑顽R像的時(shí)候是使用私有倉庫,在拉取鏡像的時(shí)候是使用組合倉庫
"insecure-registries": [
"192.168.5.6:8086",
"192.168.5.6:8087"]
}重啟,使配置生效
systemctl daemon-reload && systemctl restart docker
4.2、登錄并保存認(rèn)證
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ù)認(rèn)證,你可以使用如下方法進(jìn)行解密。
echo -n "YWRtaW46MTIzNDU2" | base64 -d echo -n "YWRtaW46SGFyYm9xMTIzNDU=" | base64 -d
同理,你更可以進(jìn)行主動(dòng)加密。
echo -n 'admin:123456' | base64
五、推送和拉取鏡像
推送鏡像
# 給構(gòu)建好的image進(jìn)行打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搭建的,需要進(jìn)行一番修改。
[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兩個(gè)端口號
- 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
是因?yàn)闆]有Realms:Docker Bearer Token Realm進(jìn)行激活。
六、說在最后的話
- 一定要弄清楚端口號
- 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)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
MySQL容器中docker-entrypoint-initdb.d目錄的使用
這篇文章主要介紹了MySQL容器中docker-entrypoint-initdb.d目錄的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟
這篇文章主要介紹了IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
docker Get https://registry-1.docker.io/v2/:
本文主要介紹了docker Get https://registry-1.docker.io/v2/: net/http: request canceled 報(bào)錯(cuò),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
Docker 配置固定IP及橋接的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker 配置固定IP和橋接的實(shí)現(xiàn)方法的相關(guān)資料,這里詳細(xì)介紹了Docker 的四種網(wǎng)絡(luò)模式及如何實(shí)現(xiàn)橋接的案例,需要的朋友可以參考下2016-10-10

