Docker部署私有倉庫(registry&Harbor)

倉庫(Repository)是集中存放鏡像的地方。
一個容易混淆的概念是註冊服務器(registry)。實際上註冊服務器是管理倉庫的具體服務器,每一個服務器上能夠有多個倉庫,而每一個倉庫下面有多個鏡像。從這方面來講,倉庫能夠被認爲是一個具體的項目或目錄。例如對於倉庫地址docker.sina.com.cn/centos:centos7來講,docekr.sian.com.cn是註冊服務器地址,centos是倉庫名,centos7是倉庫的tag(標籤)。html

Docker Hub 官方倉庫
目前docker官方維護了一個公共倉庫,Docker Hub,其中已經包括了超過1500的鏡像。大部分需求,均可以經過在Docker Hub中直接下載鏡像來實現。nginx

部署私有倉庫:

1, 經過官方的registry鏡像來部署私有倉庫:

項目環境:
兩臺主機(centos7):docker01:172.16.1.30
docker02:172.16.1.40**git

docker01:
(1)基於registry鏡像運行一個容器:
[root@sqm-docker01 ~]# docker run -d --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry:latestgithub

參數說明:
#registry服務默認監聽的是5000端口
-v = --volume 數據卷,進行一個掛載:宿主機:容器內

(2)命名私有倉庫鏡像:
##若是不對私有倉庫命名的話,默認走的是公共倉庫(docker hub),因此須要命名鏡像。
私有倉庫鏡像的命名規則:宿主機ip地址:端口號/xxxx(須要更改的名稱)
以nignx鏡像爲例,下載nginx鏡像:
[root@sqm-docker01 ~]# docker pull nginxweb

[root@sqm-docker01 ~]# docker tag  nginx:latest 172.16.1.30:5000/nginx:latest

注意:當你對源鏡像(nginx:latest)進行命名後,命名後的鏡像名稱也視爲一個標籤,由於id號是相同的。
若是當源鏡像(nginx:latest)刪除,命名後的鏡像依然會存在,由於刪除的是一個標籤。docker

(3)修改docker主配置文件:
[root@sqm-docker01 ~]# vim /usr/lib/systemd/system/docker.servicevim

指定本地倉庫的ip地址+端口號:
Docker部署私有倉庫(registry&Harbor)centos

從新加載進程並重啓docker服務:服務器

[root@sqm-docker01 ~]# systemctl daemon-reload
[root@sqm-docker01 ~]# systemctl restart docker

(4)將本地鏡像push到私有倉庫中:
[root@sqm-docker01 ~]# docker push 172.16.1.30:5000/nginx:latest
Docker部署私有倉庫(registry&Harbor)app

//查看私有倉庫中的鏡像:

[root@sqm-docker01 ~]# curl 172.16.1.30:5000/v2/_catalog
{"repositories":["nginx"]}

//查看倉庫中鏡像的標籤:

[root@sqm-docker01 ~]#  curl 172.16.1.30:5000/v2/nginx/tags/list
{"name":"nginx","tags":["latest"]}

docker02:
鏈接docker01,從docker01的倉庫中拉取鏡像:
(1)修改docker的配置文件:
[root@sqm-docker02 ~]# vim /usr/lib/systemd/system/docker.service
Docker部署私有倉庫(registry&Harbor)

重啓docker服務:

[root@sqm-docker02 ~]# systemctl daemon-reload
[root@sqm-docker02 ~]# systemctl restart docker

(2)從私有倉庫中拉取鏡像:

[root@sqm-docker02 ~]# docker pull 172.16.1.30:5000/nginx #使用pull命令進行拉取

Docker部署私有倉庫(registry&Harbor)

(3)部署nginx服務:

[root@sqm-docker02 ~]# mkdir html
[root@sqm-docker02 ~]# echo "welcome to nginx web" > html/index.html

[root@sqm-docker02 ~]# docker run -itd --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html 172.16.1.30:5000/nginx

Docker部署私有倉庫(registry&Harbor)

訪問nginx頁面:
Docker部署私有倉庫(registry&Harbor)

2,部署Harbor(哈勃)私有倉庫:

registry是官方的一個私有倉庫,而harbor是第三方的一個私有倉庫。

(1)下載compose:
安裝依賴:
[root@sqm-docker01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
從github官網上進行下載:
URL:https://github.com/docker/compose/releases
Docker部署私有倉庫(registry&Harbor)
Docker部署私有倉庫(registry&Harbor)

[root@sqm-docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose

[root@sqm-docker01 ~]# chmod +x /usr/local/bin/docker-compose

查看compose版本:

[root@sqm-docker01 ~]# docker-compose -version
docker-compose version 1.24.0, build 0aa59064

(2)下載harbor安裝包並進行解壓:

[root@sqm-docker01 ~]# tar zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/
[root@sqm-docker01 ~]# cd /usr/local/harbor/

Docker部署私有倉庫(registry&Harbor)

編寫harbor配置文件:
[root@sqm-docker01 harbor]# vim harbor.cfg
Docker部署私有倉庫(registry&Harbor)
執行腳本:
[root@sqm-docker01 harbor]# ./install.sh
Docker部署私有倉庫(registry&Harbor)

進入網站:用戶admin,密碼:Harbor12345(在harbor配置文件中能夠查看到)
URL:http://172.16.1.30
[root@sqm-docker01 harbor]# vim harbor.cfg

Docker部署私有倉庫(registry&Harbor)

Docker部署私有倉庫(registry&Harbor)
登錄界面以下:
Docker部署私有倉庫(registry&Harbor)

(3)咱們在網頁上新建一個項目:
Docker部署私有倉庫(registry&Harbor)
Docker部署私有倉庫(registry&Harbor)
Docker部署私有倉庫(registry&Harbor)

##修改docker配置文件:
[root@sqm-docker01 ~]# vim /usr/lib/systemd/system/docker.service
Docker部署私有倉庫(registry&Harbor)

//從新加載docker:

[root@sqm-docker01 ~]# systemctl daemon-reload
[root@sqm-docker01 ~]# systemctl restart docker

//重啓compose:
注意:由於剛剛已經重啓了docker服務,因此咱們須要將全部容器給從新啓動。

[root@sqm-docker01 harbor]# docker ps -a -q | xargs docker start

[root@sqm-docker01 harbor]# docker-compose stop

Docker部署私有倉庫(registry&Harbor)
[root@sqm-docker01 harbor]# docker-compose start
Docker部署私有倉庫(registry&Harbor)

(4)在本地終端上鍊接harbor:
[root@sqm-docker01 harbor]# docker login -u admin -p Harbor12345 172.16.1.30:80
Docker部署私有倉庫(registry&Harbor)

(5)將須要上傳到harbor私有倉庫的鏡像進行push:
#例如將本地的一個nginx鏡像命令而且push到倉庫:
[root@sqm-docker01 harbor]# docker tag nginx:latest 172.16.1.30:80/sunqiuming/nginx:latest

[root@sqm-docker01 harbor]# docker push 172.16.1.30:80/sunqiuming/nginx:latest #push到剛纔在網頁上建立的項目
Docker部署私有倉庫(registry&Harbor)

push成功後,咱們在網頁上進行查看:
Docker部署私有倉庫(registry&Harbor)
Docker部署私有倉庫(registry&Harbor)

docker02進行鏈接harbor:
(1)爲了在docker02再也不進入配置文件進行修改,將docker01上的docker配置文件拷貝給docker02:
#免密登錄:
[root@sqm-docker01 ~]# ssh-keygen
Docker部署私有倉庫(registry&Harbor)
[root@sqm-docker01 ~]# ssh-copy-id 172.16.1.40

[root@sqm-docker01 ~]# scp /usr/lib/systemd/system/docker.service root@172.16.1.40:/usr/lib/systemd/system/docker.service

重啓docker服務:
[root@sqm-docker02 ~]# systemctl daemon-reload
[root@sqm-docker02 ~]# systemctl restart docker

(2)鏈接harbor私有倉庫:
Docker部署私有倉庫(registry&Harbor)

(3)從harbor私有倉庫中拉取鏡像:
[root@sqm-docker02 ~]# docker pull 172.16.1.30:80/sunqiuming/nginx #指向的是剛纔上傳鏡像的倉庫中進行拉取。
Docker部署私有倉庫(registry&Harbor)
(4)最後在基於該鏡像,運行nginx服務並測試網頁:
[root@sqm-docker02 ~]# docker run -d --name nginx -p 80:80 172.16.1.30:80/sunqiuming/nginx:latest
Docker部署私有倉庫(registry&Harbor)

私有倉庫部署完成。。。。。。。

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索