Docker Registry 是Docker官方一個映象,可以用來儲存和分發Docker映象。目前比較流行的兩個映象私庫是Docker Registry ,HarBor 其中HarBor最合適企業級應用,提供良好的WEB介面進行管理。
本文主要介紹Docker Registry搭建的方式,官網地址:registry - Official Image | Docker Hub
拉取映象:
docker pull registry
執行映象:
docker run -d -p 5000:5000 --restart always --name registry registry:2
防火牆需要開放5000埠,或者直接關閉防火牆
systemctl status firewalld.service #檢視防火牆狀態
systemctl stop firewalld.service #暫停防火牆
systemctl disable firewalld.service #永久關閉防火牆
檢查映象是否執行成功:docker ps,映象成功之後私庫就算搭建成功了。
方法一:VS2019釋出可以一步直接推播到私庫
每次點選釋出就會自動推播到私庫,相當方便,背後原理和手動推播沒有區別,只是VS2019默默地把我們做了工作:建立映象,給映象打標籤,推播映象。通過Docker Desktop 工具我們可以檢視到本地映象:
方法二:手動推播
手動推播需要我們先給映象打標籤,然後推播映象。
docker image tag webapplication4 192.168.3.35:5000/webapplication4:latest
docker push 192.168.3.35:5000/webapplication4:latest
檢視己推播的映象,Docker Registry支援HTTP請求API獲取相關資料,最好是搭建WEB視覺化介面管理,下文有講到。
注意事項:docker 預設要求HTTPS連線,如果私庫不搭建HTTPS,那麼使用者端就需要設定docker的組態檔新增信任源。伺服器端(即docker私庫)不需要設定。
{
"insecure-registries":["192.168.3.35:5000"]
}
一般情況下Docker Registry是充許自由存取,作為公司或個人私庫自然是需要進行安全設定,我們可以通過htpasswd實現登陸限制。
安裝htpasswd
yum -y install httpd
在宿主機上建立資料夾來儲存htpasswd的賬號或密碼
mkdir /usr/local/auth
生成密碼
htpasswd -Bbn admin 123456 > /usr/local/auth/passwd
需要重啟容器,設定htpasswd
docker run
-p 5000:5000
--restart=always
--name registry
-v /usr/local/auth:/auth
-e REGISTRY_AUTH=htpasswd
-e REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
-d registry:2
重新請求API介面時,己提示需要認證。
私庫可以通過API進行互動,這樣互動會很麻煩,提供視覺化介面會比較容易管理一些,docker-registry-browser 管理介面提供一些基礎功能,簡單易用。
dokcer Hub地址:klausmeyer/docker-registry-browser - Docker Image | Docker Hub
gitHub地址:docker-registry-browser/README.md at master · klausmeyer/docker-registry-browser · GitHub
在私庫伺服器執行映象:
docker run
--name registry-browser
-p 8080:8080
--restart=always
--link registry
-e DOCKER_REGISTRY_URL=http://registry:5000/v2
-d klausmeyer/docker-registry-browser
注意事項:docker-registry-browser是映象,當執行docker-registry-browser的時候會新建一套虛擬環境,所以預設設定下docker-registry-browser是管理不到docker私庫。需要特別設定兩個引數:
--link registry
-e DOCKER_REGISTRY_URL=http://registry:5000/v2
對應的是私庫的容器名稱和請求API地址,預設啟動之後,存取就提示需要賬號,密碼。
Docker Registry 私庫流程大概如此,感興趣的朋友關注一下~