Docker鏡像倉庫服務-Nexus

運維雲原生集羣系統,創建本身的私有Docker鏡像倉庫必不可少。一方面能夠加快多節點部署容器鏡像的下載速度,另外一方面是爲了安全(容器裏存儲有系統全部的信息、包括密碼、數據庫等等,切記不可上傳dao共有鏡像倉庫)。能夠建立私有鏡像倉庫的服務軟件主要有這麼幾個:html

  • Docker Registry,Docker自建,使用最爲簡單,適合我的或者3-5人小團隊。
  • Harbor,基於Docker Registry開發,在之上加入了Nginx服務層,支持多租戶、負載均衡、HA和WebUI,能夠知足大型服務平臺使用。功能強大,配置稍微複雜一些。
    • Harbor原來由VMWare中國研究中心開發,2018年已經加入CNCF雲原生基金會。
  • Sonatype Nexus,就是那個以Maven庫託管知名的Sonatype開發的,能夠將各類開發組件庫一鍋端了。很是適合開發團隊使用。
  • SUSE Portus,簡單易用,適合中等規模的生產級集羣使用。

這裏,主要介紹Nexus的使用。docker

一、快速安裝

Nexus能夠提供多種軟件組件服務,這裏我經過容器來提供Nexus服務。運行下面的命令:數據庫

docker run -d --name nexus -p 5000:5000 -p 8081:8081 sonatype/nexus3

說明:json

  • 這裏的8081爲nexus的管理端口。
  • 5000爲容器鏡像服務使用的端口,留做後面建立容器鏡像倉庫服務使用。下面進一步說明。
  • 上面的容器存儲使用容器內的目錄,當容器實例刪除時將會丟失。
    • 持久存儲經過-v參數來定義。

二、登錄管理界面

上面的容器啓動完畢後,在瀏覽器輸入網址:segmentfault

http://localhost:8081

將會顯示Nexus主界面,點擊「Sign in」登陸(初始帳號admin/admin123)。以下:瀏覽器

三、建立Docker倉庫

點擊齒輪圖標進入設置界面,以下:安全

使用「Create Repository」建立容器鏡像倉庫,選擇Docker(hosted)類型,設置服務http端口爲5000。而後查看屬性。服務器

這裏的端口5000是啓動容器時就設好的。負載均衡

  • 在Nexus中每個容器鏡像服務倉庫須要指定一個端口,而在容器中必須經過-p參數開放該端口,外部才能夠訪問。

四、受權沙盒設置

啓動匿名訪問。運維

五、啓用受權沙盒

容器鏡像服務須要單獨啓用受權沙盒,在Security-Realms頁面中將Docker Bearer Token Realm加入到Active列表中。

  • 默認安裝中,沒有啓用Docker Bearer Token Realm,會致使docker login時鏈接被拒。

爲了方便,上面使用的是http鏈接協議,不建議在外網使用。

外網服務應使用https鏈接,須要預留端口,以及建立ssl證書並使用「SSL Certificates」添加進來。

六、Docker 設置

爲了方便,上面使用的是http鏈接協議,還須要在Docker客戶機設置才能訪問(默認爲https)。

執行:

sudo gedit /etc/docker/daemon.json

在文件中添加"insecure-registries": ["http://10.1.1.184:5000"],以下:

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["http://10.1.1.184:5000"]
}

說明:

  • 這裏的"exec-opts": ["native.cgroupdriver=systemd"]是爲了運行Kubernetes,加起來就是上面的文件內容。
  • 10.1.1.184爲個人服務器地址,5000爲上面Docker啓動和 Repository的服務端口,必須一致。

而後,須要從新啓動Docker:

sudo systemctl restart docker

查看一下信息:docker info,看是否出現insecure-registries的信息。

七、Docker login

使用下面的方式登陸到容器鏡像服務。

docker login 10.1.1.184:5000

八、開始使用

使用Docker Tag對容器打新的標,指向自建的倉庫。

docker tag sonatype/nexus3 10.1.1.184:5000/openthings/nexus3

使用Docker push推送容器鏡像。

docker push 10.1.1.184:5000/openthings/nexus3

使用Docker pull拉取鏡像。

docker pull 10.1.1.184:5000/openthings/nexus3

使用者發現Nexus會出現錯誤,沒法鏈接。使用下面的命令重啓Nexus的容器服務,再從新登陸就行了。

docker restart nexus

最後,簡單說下體會,使用Nexus的最大好處是同時支持Maven等軟件倉庫,維護比較簡單。其它方面如性能、容錯、擴容等企業級功能相對是比較弱的,企業版裏提供HA,是收費的Feature。

更多參考

相關文章
相關標籤/搜索