有時候使用 Docker Hub 這樣的公共倉庫可能不方便,用戶能夠建立一 個本地倉庫供私人使用。
兩種不一樣的搭建Docker私有倉庫的方法,都必需要基於一個Docker服務器上,相比較而言,Harbor功能更強大些。
以前詳細寫過Registry私有倉庫的搭建方法,這裏的Registry只是有一點配置不同而已,若要搭建Registry私有倉庫,最好結合:Docker 鏡像的建立與構建私有庫,對比其不同的地方,選擇適合本身的。git
1、搭建Registry私有倉庫github
環境以下web
host | IP | service |
---|---|---|
docker01 | 192.168.171.150 | docker私有倉庫 |
docker02-test | 192.168.171.151 | test |
docker安裝可參考部署 Docker docker
一、開始配置第一臺Docker私有倉庫服務器:vim
[root@docker01 ~]# docker pull registry [root@docker01 ~]# docker run -tid --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry #運行該鏡像,各個選項含義以下: # -tid:之後臺持久運行,並分配一個可交互的爲終端 # --name registry :給容器定義一個名字 # --restart=always:該容器能夠隨着docker服務的啓動而啓動 # -p:將容器的端口映射到宿主機,冒號前面是宿主機的端口,冒號後面是容器的端口,registry的默認端口是5000 # -v:將宿主機的目錄掛載到容器中,冒號前面是宿主機的目錄,冒號後面是容器中的目錄 [root@docker01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest 2d4f4b5309b1 6 weeks ago 26.2MB centos 7 b5b4d78bc90c 3 months ago 203MB [root@docker01 ~]# docker tag centos:7 192.168.171.150:5000/centos:7 # 更改鏡像名稱,以便符合私有倉庫名稱規範 #注:私有倉庫鏡像的命名規則:192.168.171.150:5000/XXX(宿主機的IP:5000端口/鏡像名稱) [root@docker01 ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000 #更改docker的配置文件,以便指定私有倉庫 #定位到上面那行,在後面添加「--insecure-registry」並指定私有倉庫的IP及端口 [root@docker01 ~]# systemctl daemon-reload [root@docker01 ~]# systemctl restart docker # 重啓使配置生效 [root@docker01 ~]# docker push 192.168.171.150:5000/centos:7 # 上傳鏡像到私有倉庫 [root@docker01 ~]# curl 192.168.171.150:5000/v2/_catalog #查看私有倉庫中的鏡像 {"repositories":["centos"]} [root@docker01 ~]# curl 192.168.171.150:5000/v2/centos/tags/list #查看鏡像的詳細信息 {"name":"centos","tags":["7"]}
二、第二臺Docker服務器進行測試centos
[root@docker02-test ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000 #定位到上面那行,添加「--insecure-registry」指定私有倉庫的IP及參數 [root@docker02-test ~]# systemctl daemon-reload [root@docker02-test ~]# systemctl restart docker [root@docker02-test ~]# docker pull 192.168.171.152:5000/centos:7 [root@docker02-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.171.152:5000/centos 7 b5b4d78bc90c 3 months ago 203MB
2、配置Harbor私有倉庫
Harbor私有倉庫和第一個Registry私有倉庫相比較而言,功能強大不少,而且支持web圖形化管理,推薦使用。瀏覽器
環境以下服務器
hostname | IP | service |
---|---|---|
docker01 | 192.168.171.151 | harbor |
docker03 | 192.168.171.152 | test |
一、打開github.com官網,在登陸頁面的右上角搜索compose---->找到docker/compose---->再找releases 網址
複製本身所需版本下提供的兩條命令,在第一臺Docker服務器上依次進行操做:app
[root@docker01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 [root@docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@docker01 ~]# chmod +x /usr/local/bin/docker-compose #賦予該命令執行權限 [root@docker01 ~]# docker-compose --version docker-compose version 1.25.0-rc2, build 661ac20e
二、去github官網搜索harbor------>再點擊goharbor/harbor------->再點擊「releases」 網址curl
[root@docker01 ~]# tar zxf harbor-offline-installer-v1.9.1.tgz [root@docker01 ~]# cd harbor/ [root@docker01 harbor]# vim harbor.yml hostname: 192.168.171.151 # 將hostname更改成本機IP ........... harbor_admin_password: Harbor12345 # 這行指定的是登陸harbor的登陸名及密碼 [root@docker01 harbor]# ./install.sh # 執行安裝腳本 ✔ ----Harbor has been installed and started successfully.---- [root@docker01 harbor]# ss -anput | grep 80 # 肯定80端口在監聽 [root@docker01 harbor]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:80 #定位到該行,添加「--insecure-registr」以便指定harbor的IP及其監聽端口 [root@docker01 harbor]# systemctl daemon-reload [root@docker01 harbor]# systemctl restart docker [root@docker01 harbor]# docker-compose stop # 中止全部容器 [root@docker01 harbor]# docker-compose start # 再啓動全部容器 #其實harbor容器都配置的隨着docker啓動而啓動,主要我這裏是爲了以防萬一有個容器沒啓來
三、使用瀏覽器訪問harbor服務器的IP地址,使用配置文件中指定的用戶名及密碼登陸(默認用戶爲「admin」,密碼爲「Harbor12345」)
四、點擊「新建項目」
五、定義項目名稱
六、回到Harbor服務器,開始向Harbor上傳鏡像
[root@docker01 ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 命令行登陸到harbor Login Succeeded #執行上調命令後出現的警告只是,警告你建議更改初始密碼 [root@docker01 ~]# docker tag centos:7 192.168.171.151:80/test/centos:7 #注意要上傳至harbor倉庫的命名規範,其中test是剛纔在harbor建立的項目 [root@docker01 ~]# docker push 192.168.171.151:80/test/centos:7 # 上傳至harbor
七、測試,第二臺Docker的測試端配置以下
[root@docker03 ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:80 #指定Harbor服務器的IP地址及80端口 [root@docker03 ~]# systemctl daemon-reload [root@docker03 ~]# systemctl restart docker [root@docker03 ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 登陸到私有倉庫 Login Succeeded [root@docker03 ~]# docker pull 192.168.171.151:80/test/centos:7