1. 程式人生 > 其它 >企業DevOps之路:釋出映象到 Harbor 倉庫

企業DevOps之路:釋出映象到 Harbor 倉庫

1. Harbor 服務繫結 host

[root@localhost harbor]# vi /etc/hosts
[root@localhost harbor]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.8 harbor.olive.org

2. 登入 Harbor 映象倉庫

[root@localhost harbor]# docker login harbor.olive.org
Username: admin
Password:
Error response from daemon: Get "https://harbor.olive.org/v2/": dial tcp 192.168.10.8:443: connect: connection refused

出現以上拒絕連線的錯誤,是因為在使用 docker 的倉庫時,Registry為了安全性考慮,預設是需要 https 證書支援。除了生成證書,配置https的辦法之外;在實驗環境中,還可以通過修改 docker 的配置檔案 daemon.json 把Harbor地址加入到Docker信任列表來解決。

/etc/docker/daemon.json 是 docker 的配置檔案,預設是沒有的,需要手動建立,可進行如下配置:

vi /etc/docker/daemon.json

新增 insecure-registries 欄位,在列表里加入自己的 ip 或者域名

{
  "insecure-registries": ["http://harbor.olive.org"]
}

修改後重啟 docker

#重新獲取配置
systemctl daemon-reload
#重新啟動docker
systemctl restart docker

重啟 docker 之後,可能會遇到 Harbo r無法正常訪問的情況;這是因為 docker重啟後,Harbor 相關的容器沒有自動啟動,只要將所有的 Harbor 容器重啟即可,最好先啟動 harbor-log 這個容器。

可以使用命令 docker restart containerID逐個重啟,也可以使用 docker-compose 進行重新啟動:

[root@localhost harbor]# cd /usr/local/harbor
[root@localhost harbor]# docker-compose stop
[root@localhost harbor]# docker-compose up -d

這個 Harbor 啟動和停止操作必須在 Harbor 的安裝目錄下操作以上命令,否則會報找不到docker-compose.yml的錯誤。

再次登入 Harbor

[root@localhost harbor]# docker login harbor.olive.org
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@localhost harbor]#

3. 推送映象到 Harbor 倉庫

  • 映象打標籤

docker tag centos-jre8:v1.0 harbor.olive.org/omg/centos-jre8:v1.0

centos-jre8:v1.0是由下圖的 REPOSITORY+TAG 組成;使用docker images命令檢視

 

 

  • 在 Harbor 建立專案

 

 

  • 推送映象

docker push harbor.olive.org/omg/centos-jre8:v1.0

沒在 Harbor 建立專案,就進行映象推送;出現以下錯誤:報找不到omg專案

[root@localhost harbor]# docker push harbor.olive.org/omg/centos-jre8:v1.0
The push refers to repository [harbor.olive.org/omg/centos-jre8]
6575c18211a0: Preparing
15836fdef74a: Preparing
174f56854903: Preparing
unauthorized: project omg not found: project omg not found

建立專案後,推送

[root@localhost harbor]# docker push harbor.olive.org/omg/centos-jre8:v1.0
The push refers to repository [harbor.olive.org/omg/centos-jre8]
6575c18211a0: Pushed
15836fdef74a: Pushed
174f56854903: Pushed
v1.0: digest: sha256:3cba5aaf993441fb237ab950b2d207ee624a801dd031ecb35e8f72ef03e99cb4 size: 948

 

 

4. 從 Harbor 倉庫拉取映象

  • 先登入

docker login -u admin -p Harbor123 harbor.olive.org
  • 拉取映象

docker pull harbor.olive.org/omg/centos-jre8:v1.0

另外拉取映象的地址也可以在如下 Harbor 介面找到

 

 

這裡複製出來的是ip,如果使用這個拉取命令,需要修改一下/etc/docker/daemon.jsoninsecure-registries欄位增加 ip。

docker pull 192.168.10.8/omg/centos-jre8@sha256:3cba5aaf993441fb237ab950b2d207ee624a801dd031ecb35e8f72ef03e99cb4

5.  登出 Harbor 映象倉庫

[root@localhost harbor]# docker logout harbor.olive.org
Removing login credentials for harbor.olive.org