docker安裝nexus3并創(chuàng)建三種私庫
一、nexus3安裝
1.下載nexus3的鏡像
$ docker pull sonatype/nexus3
2.使用鏡像啟動一個容器
$ docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus3 -v /home/nexus/nexus-data:/nexus-data --restart=always sonatype/nexus3
- 8082端口是用于host鏡像倉庫的服務(wù)端口
- 8083端口用戶group鏡像倉庫的服務(wù)端口
- 8081 端口是nexus的服務(wù)端口
- --name nexus3
- -v /home/nexus/nexus-data:/nexus-data 將容器內(nèi)nexus-data數(shù)據(jù)文件夾掛載到宿主機/home/nexus/nexus-data目錄下
- sonatype/nexus3 鏡像名禀酱,如果后面不加版本號控乾,則默認(rèn)啟動latest版本
這里單獨說一下 --restart=always:
意思是不管退出狀態(tài)碼是什么始終重啟容器剩失。當(dāng)指定always時勘究,docker daemon將無限次數(shù)地重啟容器渗鬼。容器也會在daemon啟動時嘗試重啟勘畔,不管容器當(dāng)時的狀態(tài)如何所灸。
- no :容器退出時不要自動重啟。這個是默認(rèn)值炫七。
- on-failure[:max-retries] : 只在容器以非0狀態(tài)碼退出時重啟爬立。可選的万哪,可以退出docker daemon嘗試重啟容器的次數(shù)侠驯。
- always :不管退出狀態(tài)碼是什么始終重啟容器。當(dāng)指定always時奕巍,docker daemon將無限次數(shù)地重啟容器吟策。容器也會在daemon啟動時嘗試重啟,不管容器當(dāng)時的狀態(tài)如何的止。
- unless-stopped :不管退出狀態(tài)碼是什么始終重啟容器檩坚,不過當(dāng)daemon啟動時,如果容器之前已經(jīng)為停止?fàn)顟B(tài)诅福,不要嘗試啟動它匾委。
啟動之后我們就可以通過http://服務(wù)器IP:8081訪問。默認(rèn)賬號密碼為admin/admin123
二氓润、Nexus3創(chuàng)建Docker私有倉庫
1.通過瀏覽器訪問Nexus
http://服務(wù)器IP:8081
2.登錄nexus
點擊右上角進行登錄赂乐,通過初始用戶名和密碼進行登錄(admin/admin123):
3.Create repository
點擊設(shè)置界面,選擇Repositories咖气,點擊Create repository挨措,如下圖所示:
4.選擇倉庫類型
這里Docker有三種類型挖滤,分別是group、hosted运嗜、proxy壶辜。選擇docker(hosted),如下圖:
注:Docker鏡像倉庫類型含義解釋如下:
- hosted : 本地存儲担租,即同docker官方倉庫一樣提供本地私服功能
- proxy : 提供代理其他倉庫的類型砸民,如docker中央倉庫
- group : 組類型,實質(zhì)作用是組合多個倉庫為一個地址
4.1 創(chuàng)建host倉庫
指定docker倉庫的名稱奋救、指定一個端口用來通過http的方式進行訪問倉庫岭参、勾選是否支持docker API V1,然后create repository尝艘;
4.2 創(chuàng)建proxy倉庫
4.3 創(chuàng)建group倉庫
5.docker服務(wù)的設(shè)定
Docker的私庫可以使用http或者h(yuǎn)ttps演侯,Nexus 3都予以支持,本文的方式采用http方式背亥,因此需要設(shè)定docker秒际,在docker啟動前設(shè)定如下信息是需要的
編輯/etc/docker/daemon.json;增加如下內(nèi)容,當(dāng)然也可通過啟動參數(shù)增加
$ vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["192.168.80.129:8082","192.168.80.129:8083"],
"disable-legacy-registry": true
}
6.重啟docker進程
# 使daemon生效
$ systemctl daemon-reload
# 重啟docker
$ systemctl restart docker
7.驗證登錄
要使用私庫進行上傳下載需要進行登錄連接到Nexus
$ docker login http://192.168.1.111:8082
$ docker login http://192.168.1.111:8083
8.docker-proxy驗證
$ docker pull 192.168.1.111:8083/redis
Using default tag: latest
latest: Pulling from redis
b0568b191983: Pulling fs layer
6637dc5b29fe: Download complete
7b4314315f15: Pulling fs layer
2fd86759b5ff: Waiting
0f04862b5a3b: Waiting
2db0056aa977: Waiting
查了一下nexus的一些問題狡汉,發(fā)現(xiàn)有不少都是跟blob相關(guān)娄徊,看起來相關(guān)的小的問題還有一些在不斷的收拾中,但是不影響結(jié)果盾戴。 確認(rèn)proxy倉庫寄锐,發(fā)現(xiàn)pull的alpine的3.5版本已然在proxy倉庫中保存完畢,所以上面的unknown blob也確實沒有影響結(jié)果尖啡。
9 docker-hosted驗證
查看鏡像
$ docker images
tag鏡像
$ docker tag hello-world:latest 192.168.1.111:8082/docker:latest
push鏡像
$ docker push 192.168.1.111:8082/docker:latest