搭建docker私有映象倉庫及部署 web管理端

2021-08-15 02:18:52 字數 3545 閱讀 1479

1.安裝centos和docker

centos

核心版本在3.10以上(推薦centos7以上),docker在1.6版本以上,具體安裝docker和啟動服務略過

2.官方獲取docker registry映象並啟動

#dockerpull registry

拉取官方私有倉庫映象registry

#docker run -d -p 5000:5000 

--restart

=always--privileged=true  

--name registry -v /home/docker_file/repos:/var/lib/registry registry:latest

說明:-v /home/docker_file/repos:/var/lib/registry 

預設情況下,registry會將倉庫存放於容器內的/var/lib/registry目錄下(不同版本registry的路徑可能不一樣,具體官網檢視其dockerfile),通過此設定將registry倉庫位址修改為本機目錄的/home/docker_file/repos

–privileged=true

:centos7中的安全模組selinux把許可權禁掉了,引數給容器加特權,不加上傳映象會報許可權錯誤(oserror: [errno 13] permission denied:『/tmp/registry/repositories/liibrary』)或者(receivedunexpected http status: 500 internal server error)錯誤

注:啟動成功可以輸入docker伺服器ip:5000則會返回空白頁面,私有倉庫預設埠5000

3.驗證本地映象倉庫

拉取alpine映象,然後修改tag(原tag:docker.io/alpine:latest),再push到本地映象倉庫,命令如下;

# docker tag  alpine:latest localhost:5000/alpine:latest

# docker pushlocalhost:5000/alpine:latest 將alpine上傳到本地映象倉庫

刪除images中的alpine:latest,重新拉取本地映象倉庫的alpine:latest測試,如下:

#docker rmi alpine:latest

#docker pull localhost:5000/alpine:latest

通過docker images可檢視localhost:5000/alpine:latest證明本地映象倉庫安裝成功

#curl http://localhost:5000/v2/_catalog 檢視本地映象的列表

#curl  http://localhost:5000/v2/image_name/tags/list  獲取某個映象的標籤列表

4.遠端訪問私有映象倉庫

以上配置是只能當前伺服器可訪問倉庫,要遠端訪問registry,需要配置客戶端的docker訪問模式支援http,docker與dockerregistry互動預設使用的是https,而搭建的私有倉庫一般只提供http服務。

4.1 修改docker配置檔案/etc/sysconfig/docker(ubuntu為/etc/default/docker)

#vi /etc/sysconfig/docker

4.2 修改配置檔案如下

options=

'--insecure-registryregistry.hub:5000'

add_registry=

'--add-registryregistry.hub:5000' 

說明:registry.hub為docker私有倉庫伺服器的ip或網域名稱

4.3 重啟docker

#systemctl restart  docker.service

4.4 測試

可以直接拉取剛才建立的docker私有倉庫伺服器的映象,無需registry的網域名稱和埠。

5.部署registry的web管理端

registry的web ui工具目前主流的有docker-registry-frontend和docker-registry-web,根據docker hub上的stars流行度來說,本次使用docker-registry-frontend來搭建registry的web ui管理端,目前此版本僅支援私有倉庫映象的瀏覽。

直接從docker hub中拉取執行即可

使用方法:

# docker run -d -eenv_docker_registry_host=192.168.17.129 -e env_docker_registry_port=5000  -p 8080:80konradkleine/docker-registry-frontend:v2

引數說明:

env_docker_registry_host 指定對應registry私服的網域名稱或ip

env_docker_registry_port指定對應registry私服的埠

docker-registry-frontend執行容器使用apacheweb伺服器暴露80埠,外部訪問需要做伺服器和容器埠繫結,此處繫結伺服器的8080埠。

其它常用引數:

-e env_docker_registry_use_ssl=1 

registry私服僅能通過https訪問

-e env_mode_browse_only=true 

僅瀏覽不能關聯映象模式啟動

-eenv_default_repositories_per_page=50  修改web端每頁的映象數,預設20

-e env_default_tags_per_page=5

修改web端映象每頁的tag數,預設10

docker-registry-frontend支援https訪問,需要對映埠和關聯https證書

,引數如下:

-v  $pwd/server.crt:/etc/apache2/server.crt:ro

-v $pwd/server.key:/etc/apache2/server.key:ro

-p 443:443

5.其它問題

啟動web管理端後如無法載入任何映象,報錯如下:

原因是docker-registry-frontend容器內無法訪問註冊伺服器,解決辦法是通過容器互聯,使前者可以訪問註冊伺服器的對應5000埠,命令如下:

docker run -d -eenv_docker_registry_host=registry -e env_docker_registry_port=5000 -p 8080:80--link registry:registry konradkleine/docker-registry-frontend:v2

問題分析請參照我的問題解決歷程:

最後貼乙個顯像管理頁面的成功執行圖:

搭建docker映象私有倉庫

docker官方提供了docker hub來儲存我們的映象檔案。但由於docker hub管理的都是公開的映象,並且訪問的時候有時會特別的慢。所以我們打算來搭建乙個私有的倉庫,需要使用官方庫中的registry映象。執行registry映象 docker run d p 5000 5000 v ro...

Docker搭建私有映象倉庫

使用docker官方的registry映象搭建私有倉庫 一 安裝 1.拉取私有倉庫映象 docker pull registry22.建立啟動私有倉庫容器 mkdir pv usr local docker registry docker run itd v usr local docker reg...

搭建Harbor映象 docker 私有倉庫

1.搭建企業級別docker映象私有倉庫 2.推薦使用harbor搭建 官方推出的registry,雖然能實現映象倉庫管理。但是相對harbor來說功能相對少,例如使用者管理,許可權管理,ui視覺化介面管理等都相對薄弱。所以搭建企業級用於生產環境的私有倉庫管理,推薦使用harbor。3.安裝harb...