nexus 最初用于搭建 maven 私服,提供企業(yè)級(jí) maven jar 包管理等功能;2.x 后續(xù)支持了 npm、rpm 等包管理;最新版本 3.x 開始支持 Docker 倉庫,以下為使用 neuxs 擼一個(gè) docker 倉庫的教程,希望對(duì)大家學(xué)習(xí)Docker有所幫助,一起來看看吧。
一、環(huán)境準(zhǔn)備
初始環(huán)境如下
· Centos 7 x86_64
· OpenJDK 8
· Nexus 3.2.0-01
安裝 OpenJDK 命令如下
yum install java-1.8.0-openjdk -y
安裝完成后驗(yàn)證是否安裝成功
? ~ java -versionopenjdk version "1.8.0_111"OpenJDK Runtime Environment (build 1.8.0_111-b15)OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)
下載 neuxs3 安裝包并解壓
wget --no-check-certificate https://download.sonatype.com/nexus/3/nexus-3.2.0-01-unix.tar.gz
tar -zxvf nexus-3.2.0-01-unix.tar.gz
二、安裝 nexus
首先將 nexus 移動(dòng)到任意位置
mv nexus-3.2.0-01 /usr/local
創(chuàng)建 nexus 用戶
adduser -r -s /sbin/nologin -d /data/nexus-data nexus
默認(rèn) nexus 運(yùn)行后會(huì)在同級(jí)目錄下創(chuàng)建一個(gè) sonatype-work 工作目錄,并將其數(shù)據(jù)保存在此目錄中,所以為了數(shù)據(jù)持久化先手動(dòng)創(chuàng)建并設(shè)置其數(shù)據(jù)存儲(chǔ)位置
# 創(chuàng)建基本目錄結(jié)構(gòu)
mkdir -p /usr/local/sonatype-work
# 創(chuàng)建建數(shù)據(jù)目錄
mkdir -p /data/nexus-data/{etc,log,tmp}
# 將數(shù)據(jù)目錄軟連接到工作目錄
ln -s /data/nexus-data /usr/local/sonatype-work/nexus3
# 更新所有目錄權(quán)限
chmod -R 755 /usr/local/{sonatype-work,nexus-3.2.0-01} /data/nexus-data
chown -R nexus:nexus /usr/local/{sonatype-work,nexus-3.2.0-01} /data/nexus-data
最后啟動(dòng) nexus 訪問 8081 端口即可
# 以前臺(tái)方式運(yùn)行
sudo -u nexus /usr/local/nexus-3.2.0-01/bin/nexus run
# 后臺(tái)運(yùn)行
sudo -u nexus /usr/local/nexus-3.2.0-01/bin/nexus start
默認(rèn)賬戶 admin 密碼 admin123 ,登錄如下
三、創(chuàng)建 docker 倉庫
在設(shè)置 Repositories 選項(xiàng)卡中中選擇 Create repository
倉庫類型有很多,docker 相關(guān)總共有三種類型,其秉承 maven 私服的概念
· hosted: 本地存儲(chǔ),即同 docker 官方倉庫一樣提供本地私服功能
· proxy: 提供代理其他倉庫的類型,如 docker 中央倉庫
· group: 組類型,實(shí)質(zhì)作用是組合多個(gè)倉庫為一個(gè)地址
3.1、創(chuàng)建一個(gè)私服
選擇 hosted 類型倉庫,然后輸入一個(gè)倉庫名, 并勾選 HTTP 選項(xiàng),端口任意即可(下面截圖失誤,不補(bǔ)了)
3.2、測(cè)試私服
創(chuàng)建好以后更改 docker 參數(shù),測(cè)試即可
# 增加非安全倉庫
vim /usr/lib/systemd/system/docker.service# 在 ExecStart 后面增加(這里改了 host,上面端口用的 8800)
--insecure-registry registry.com:8800# 重啟 docker
systemctl daemon-reload
systemctl restart docker
測(cè)試 push 和 pull 鏡像
? ~ docker tag mritd/alpine registry.com:8800/alpine
? ~ docker push registry.com:8800/alpine
The push refers to a repository [registry.com:8800/alpine]
754684812d65: Pushed
60ab55d3379d: Pushed
latest: digest: sha256:28f397aca53eb3e8ea1627f4af9c262fca7db17f0c6db492b53adc7bca7d0f91 size: 739
? ~ docker rmi registry.com:8800/alpine
Untagged: registry.com:8800/alpine:latest
Untagged: registry.com:8800/alpine@sha256:28f397aca53eb3e8ea1627f4af9c262fca7db17f0c6db492b53adc7bca7d0f91
? ~ docker rmi mritd/alpine
Untagged: mritd/alpine:latest
Untagged: mritd/alpine@sha256:28f397aca53eb3e8ea1627f4af9c262fca7db17f0c6db492b53adc7bca7d0f91
Deleted: sha256:090c790ee6f28f495d92d5be43641573b0d1b5502b35f7662d88cdbf8d548afd
Deleted: sha256:378e2b887fcdffcbd113a7cf6f97e9f8a58851b0a205b31a93acdb887912850d
? ~ docker pull registry.com:8800/alpine
Using default tag: latest
latest: Pulling from alpine
0a8490d0dfd3: Already exists
8fb018fb4173: Pull complete
Digest: sha256:28f397aca53eb3e8ea1627f4af9c262fca7db17f0c6db492b53adc7bca7d0f91
Status: Downloaded newer image for registry.com:8800/alpine:latest
3.2、創(chuàng)建代理倉庫
代理倉庫參考官方文檔 點(diǎn)這里 ,本人不才….沒成功,有愛探索的可以嘗試一下,如果成功可以探討一下…..個(gè)人懷疑是 index 有問題
根據(jù)官方文檔的這段提示
Just to recap, in order to configure a proxy for Docker Hub you configure the Remote Storage URL to https://registry-1.docker.io, enable Docker V1 API support and for the choice of Docker Index select the Use Docker Hub option.
創(chuàng)建倉庫類型選擇 proxy ,Remote storage 填寫 https://registry-1.docker.io,Docker index 選擇 Use Docker Hub ,然后從 代理倉庫地址 pull 就可以,但是本人百試不成功,截圖如下
3.4、創(chuàng)建 group 倉庫
group 不提供具體存儲(chǔ)服務(wù),其主要作用就是類似一個(gè)前端反代,可以把多個(gè)倉庫(比如 hosted 私服和 proxy)組合成一個(gè)地址提供訪問,創(chuàng)建方法基本相同,主要是添加多個(gè) hosted 或者 proxy 類型的其他倉庫即可,這里不再詳細(xì)闡述,截圖如下
來源:漠然