Docker私有鏡像倉庫搭建

1、docker私有倉庫的搭建

       在 Docker 中,當我們執行 docker pull xxx 的時候,實際上是從 registry.hub.docker.com 這個地址去查找,這就是Docker公司爲我們提供的公共倉庫,上面的鏡像,大家都可以看到,也可以使用。例如:docker pull registry.hub.docker.com/library/alpine。當然我們也可以搭建自己的私有倉庫。

       搭建Docker私有倉庫的方法有多種,如docker registry、nexus、harbor都可以搭建私有倉庫。其中用docker命令拉取docker registry,將docker的倉庫鏡像拉取到本地,在本地構建一個docker倉庫,這種方法要自己對倉庫進行權限管理,沒有圖形化頁面操作,命令操作比較繁瑣,另外在dockertoolbox下搭建私有鏡像庫出現的問題比較多,建議還是安裝linux系統進行搭建。nexus,harbor,docker-compose可以進行圖形化頁面倉庫以及圖形化權限管理,harbor也集成了mysql和log。下面以harbor和docker-compose爲例。

 

2、所需環境

  • docker
  • docker-compose  :https://github.com/docker/compose/releases
  • openssl(可選): https授權證書。非生產環境可僅配置http。
  • harbor:

官方地址:https://github.com/goharbor/harbor/releases

官方說明文檔:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

證書文檔:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md

 

3、下載harbor並解壓

下載tgz包並解壓

tar zxf harbor-offline-installer-v1.9.1.tgz

其中harbor.yml就是配置文件

 

4、安裝harbor

(1)修改hostname(主機)和port(端口)等

       該配置文件除了主機和端口還包括賬號、密碼、數據庫等等的設置。

注:修改配置文件後重啓:

docker-compose down
./prepare
docker-compose up –d

2)準備安裝包

./prepare

(3)正式安裝

./install.sh

 

5、通過瀏覽器訪問

       這時候就可以訪問服務器地址(注意要帶上端口)登錄harbor管理界面了,默認賬號和密碼是adminHarbor12345,在harbor.yml中也有寫明。其中有一個默認叫library的公開項目。

創建項目

注:也可通過修改/etc/host目錄來對hostname域名進行映射

 

6、推送鏡像到harbor

(1)登錄harbor

(a)在/etc/docker/daemon.json添加私庫地址

harbor默認使用https,如果要使用http,則需要修改/etc/docker/daemon.json文件。因此在登錄harbor之前需要在/etc/docker/daemon.json添加私庫地址

(b)添加http允許權限

查看docker.service文件位置:

systemctl status docker

修改docker.service

重啓docker:

systemctl restart docker

注:登錄失敗

(a)Error response from daemon: Get https://192.168.152.128:5000/v2/: http: server gave HTTP response to HTTPS client

在/etc/docker/daemon.json添加私庫地址

(b)Error response from daemon: Get http://192.168.152.128:5000/v2/: dial tcp 192.168.152.128:5000: connect: connection refused

如果在修改/etc/docker/daemon.json和/lib/systemd/docker.service文件後還是出現拒絕連接則重啓haobor即可:

docker-compose up –d

另:退出登錄:docker logout [hostname]

(2)推送鏡像到haobor

(a)製作鏡像

docker tag [images]:[tag] [harbor ip]:[port]/[library]/[images]:[tag]

例:

docker tag nginx_1:v1 192.168.152.128:5000/mylib/nginx_1:v1

注:一定要將鏡像的peoository命名爲[harbor ip]:[port]/[library]/[images]:[tag]

(b)推送鏡像

docker push [harbor ip]:[port]/[library]/[images]:[tag]

例:

docker push 192.168.152.128:5000/mylib/nginx_1:v1

注:denied: requested access to the resource is denied

出現此錯誤的原因之一是鏡像的peoository有問題,其格式應該爲:

[harbor ip]:[port]/[library]/[images]:[tag]

修改鏡像格式爲對應格式即可:

docker tag [images]:[tag] [harbor ip]:[port]/[library]/[images]:[tag]

(3)查看鏡像

在推送完鏡像後此時在鏡像倉庫中就可以看到了。

(4)從harbor拉取鏡像

docker pull [harbor]:[5000]/[library][images]:[tag]

例:

docker pull 192.168.152.128:5000/mylib/nginx_1:v1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章