docker私有倉庫搭建

         使用docker構建了較多的鏡像時,爲了方便鏡像的管理需要將鏡像推到鏡像倉庫中,由於公共鏡像倉庫由於安全性及網絡限制;此時,可以自己搭建docker倉庫。

一、使用docker registry搭建docker倉庫

1、使用docker registry rpm包構建docker鏡像倉庫

(1)使用yum安裝docker retistry

# 先安裝epel倉庫    
]# yum install epel-release
# 安裝docker registry,真是的安裝包爲docker-distribution
]# yum install docker-registry
# 查看安裝後生成文件
]# rpm -ql docker-distribution
/etc/docker-distribution/registry/config.yml
/usr/bin/registry
/usr/lib/systemd/system/docker-distribution.service
/usr/share/doc/docker-distribution-2.6.2
/usr/share/doc/docker-distribution-2.6.2/AUTHORS
/usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
/usr/share/doc/docker-distribution-2.6.2/LICENSE
/usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
/usr/share/doc/docker-distribution-2.6.2/README.md
/var/lib/registry

(2)配置registry

         Docker registry安裝完成後的配置文件爲/etc/docker-distribution/registry/config.yml,主要的配置選項如下:

version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
http:
    addr: :5000

         在配置文件中rootdirectory爲鏡像的存放目錄,addr爲該服務監聽的端口地址。

(3)啓動docker registry

# 設置docker registry服務開機自啓動
]# systemctl enable docker-distribution
# 啓動docker registry
]# systemctl start docker-distribution

(4)上傳鏡像驗證

         由於docker默認不支持http協議,自己單間的證書在沒有配置https證書時均使用http協議,所以需要配置使docker客戶端支持http協議,配置如下:

]# cat /etc/docker/daemon.json 
{
  "insecure-registries": ["http://192.168.16.160:5000"]
}

         配置docker支持客戶端後,就可以將自建的docker鏡像上傳至自建的docker倉庫中。

# 對創建的docker進行打標籤
]# docker tag test_dayi123:v0.12 192.168.16.160:5000/test/test:v0.1
# 上傳鏡像
]# docker push 192.168.16.160:5000/test/test:v0.1

2、基於容器構建docker私有倉庫

         基於容器構建docker私有倉庫也非常簡單,只需要一條命令就可以搭建

# 基於容器構建docker私有倉庫
]# docker run -d -p 5000:5000 --restart=always --name registry registry

         使用docker容器構建docker倉庫時,也可將配置文件及倉庫目錄掛在到宿主機上,方便配置管理。使用docker容器構建的registry倉庫的使用方法同yun安裝的使用方法相同。

3、配置TLS證書

         在運行了registry服務後,在沒有更改客戶端配置文件及配置證書時上傳鏡像時會報錯,而證書可以從第三方代理機構去申請,也可自己生成。使用自定義的證書配置如下:

# 生成證書,生成證書時需要填寫相關信息,”Common Name”爲配置證書的域名
]# mkdir certs
]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/myrepo.key -x509 -days 365 -out certs/myrepo.crt
# 將用戶證書放置到相應位置
]# cp certs/myrepo.crt /etc/docker/certs.d/dayi123.com:5000/
# 基於容器創建registry服務是使用證書
]# docker run -d -p 5000:5000 --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/myrepo.crt -e REGISTRY_HTTP_TLS_KEY=/certs/myrepo.key registry

二、使用harbor搭建docker倉庫

         我們使用docker官方提供的docker registy來管理鏡像時,只能通過命令上傳下載鏡像,並不能像dockerhub及阿里docker倉庫那樣可以通過web頁面管理瀏覽鏡像;harbor正好提供了類似的功能。

         Harbor是由vmware中國團隊開發的一款鏡像倉庫,harbor是基於docker官方的registry的基礎提供用戶權限管理、鏡像複製等功能,提高使用的registry的效率。Harbor的githubdi地址爲(https://github.com/goharbor/harbor)

1、harbor的安裝

         Harbor的安裝可以使用在線安裝,離線安裝及OVA安裝,在線安裝是使用docker官方的容器編排工具docker-compose安裝,使用docker-compose的方式安裝簡單方便。

(1)安裝前環境準備

         安裝主機配置要求要求

設備

最小

建議配置

CPU

minimal 2 CPU

4 CPU is preferred

Mem

minimal 4GB

8GB is preferred

Disk

minimal 40GB

160GB is preferred

         安裝前環境準備:

# 安裝docker及docker-compose
]# yum install docker-ce
]# yum install docker-compose

(2)下載harbor

# 下載harbor
]# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.3.tgz
]# tar -xf harbor-offline-installer-v1.6.3.tgz
]# cd harbor

(3)配置harbor

         解壓完成後,在解壓目錄中的主要配置文件有harbor.cfg(harbor的配置文件),docker-compose.yml(docker-compose容器編排配置文件)。Harbor主要的配置內容爲:

# 版本
_version = 1.6.0
# 主機名
hostname = 192.168.17.160
# 使用的協議
ui_url_protocol = http
# 最大的連接數
max_job_workers = 3
# 證書相關配置
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
# 日誌切割相關配置
log_rotate_count = 50
log_rotate_size = 200M
# 配置郵箱
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = [email protected]
email_password = abc
email_from = admin <[email protected]>
email_ssl = false
email_insecure = false
# admin用戶登錄密碼
harbor_admin_password = test@123
# 數據庫相關配置
db_host = postgresql
db_password = root123
db_port = 5432
db_user = postgres

(3)安裝harbor

         修改完配置後,直接運行install.sh腳本可完成harbor的安裝。

         Harbor的安裝是將harbor需要運行的各個組件通過docker-comose編排工具完成下載運行。

# 安裝harbor
]# ./install.sh
# 運行harbor,主要運行了以下容器
]# docker images
REPOSITORY                      TAG                
goharbor/chartmuseum-photon     v0.7.1-v1.6.3      
goharbor/harbor-migrator        v1.6.3             
goharbor/redis-photon           v1.6.3             
goharbor/clair-photon           v2.0.6-v1.6.3      
goharbor/notary-server-photon   v0.5.1-v1.6.3      
goharbor/notary-signer-photon   v0.5.1-v1.6.3      
goharbor/registry-photon        v2.6.2-v1.6.3      
goharbor/nginx-photon           v1.6.3             
goharbor/harbor-log             v1.6.3             
goharbor/harbor-jobservice      v1.6.3             
goharbor/harbor-ui              v1.6.3             
goharbor/harbor-adminserver     v1.6.3             
goharbor/harbor-db              v1.6.3       
2、harbor應用

(1)harbor的使用

         harbor安裝完成後,既可以通過命令行去上傳下載鏡像,也可通過web界面登錄。安裝完成登錄後後的web界面登錄如下:

 

 

       安裝完成後,可通過web頁面登錄創建用戶,創建項目等操作。

(2)上傳鏡像到harbor倉庫

         在沒有配置https時,harbor倉庫默認使用的是http協議;爲了讓docker客戶端支持http,同樣也需要更改docker客戶端的配置文件:

# 使docker客戶端支持http協議
]# cat /etc/docker/daemon.json 
{
  "insecure-registries": ["http://192.168.17.160:5000"]
}

         配置好客戶端支持http並登陸後後就可以上傳鏡像了。在上傳鏡像前需要在harbor中創建好相應的倉庫。

# 登陸harbor
]# docker login http://192.168.17.160 -udayi123
# 爲鏡像打標籤
]# docker tag busybox:latest 192.168.17.160/test01/test-01:v0.1
# 上傳鏡像,已經創建好了test01倉庫
]# docker push 192.168.17.160/test01/test-01:v0.1

(3)harbor服務的管理。

         Harbor服務是通過docker-compose容器編排工具安裝,依賴了多個容器服務;harbor的管理也可以通過docker-compose命令來管理。執行docker-compose命令需要在docker-compose.ym文件所在目錄下執行。

# 停止harbor
]# docker-compose stop
# 啓動harbor 
]# docker-compose start

 

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