企業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.json
;insecure-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