部署企業(yè)私有鏡像倉庫Harbor
私有鏡像倉庫有許多優(yōu)點(diǎn)
1)節(jié)省網(wǎng)絡(luò)帶寬宿稀,針對(duì)于每個(gè)鏡像不用每個(gè)人都去中央倉庫上面去下載愕难,只需要從私有倉庫中下載即可哈垢。
2)提供鏡像資源利用妻柒,針對(duì)于公司內(nèi)部使用的鏡像,推送到本地的私有倉庫中耘分,以供公司內(nèi)部相關(guān)人員使用举塔。
VMware公司開源了企業(yè)級(jí) Registry 項(xiàng)目 Harbor,其的目標(biāo)是幫助用戶迅速搭建一個(gè)企業(yè)級(jí)的 Docker registry 服務(wù)求泰。
華為云購買云主機(jī)央渣,準(zhǔn)備環(huán)境如下
主機(jī)名稱 | IP地址 | 角色 | 配置 |
---|---|---|---|
harbor | 192.168.1.100 | Harbor私有鏡像倉庫 | 1GB/1CPU |
docker | 192.168.1.68 | Docker主機(jī) | 1GB/1CPU |
分發(fā)實(shí)驗(yàn)所需軟件包
Dokcer Compose 是用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。
Harbor的每個(gè)組件都是以 Docker 容器的形式構(gòu)建的渴频,所以使用 Docker Compose 來對(duì)它進(jìn)行部署芽丹。
部署私有鏡像倉庫harbor
從 jump-server 主機(jī)拷貝 harbor 軟件到 1.100 主機(jī)
[root@jump-server ~]# scp -r /root/project3/harbor 192.168.1.100:/root/
harbor主機(jī)開機(jī)路由轉(zhuǎn)發(fā)
[root@harbor ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@harbor ~]# sysctl -p
harbor主機(jī)安裝docker服務(wù),并啟動(dòng)
[root@harbor ~]# cd /root/harbor/
[root@harbor harbor]# yum -y install docker-ce-18.06.3.ce-3.el7.x86_64.rpm
[root@harbor harbor]# systemctl start docker
[root@harbor harbor]# systemctl enable docker
部署harbor
[root@harbor harbor]# mv docker-compose /usr/local/bin/
[root@harbor harbor]# chmod +x /usr/local/bin/docker-compose
[root@harbor harbor]# tar -xf harbor-offline-installer-v2.2.3.tgz -C /usr/local/
[root@harbor harbor]# cd /usr/local/harbor
[root@harbor harbor]# ls
common.sh harbor.yml.tmpl LICENSE
harbor.v2.2.3.tar.gz install.sh prepare
修改配置文件
#拷貝harbor配置文件
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
#訪問harbor管理界面的地址,改為本機(jī)的IP地址
[root@harbor harbor]# vim harbor.yml
5 hostname = 192.168.1.100
# 加上注釋,否則需要證書
13 #https: #加上注釋
14 # https port for harbor, default is 443
15 #port: 443 #加上注釋
16 # The path of cert and key files for nginx
17 #certificate: /your/certificate/path #加上注釋
18 #private_key: /your/private/key/path #加上注釋
安裝harbor
[root@harbor harbor]# ./install.sh
.......
? ----Harbor has been installed and started successfully.----
[root@harbor harbor]# ss -antpu | grep 80
tcp LISTEN 0 1024 [::]:80 [::]:* users:
(("docker-proxy",pid=15459,fd=4))
1、設(shè)置監(jiān)聽器卜朗,添加后端服務(wù)器拔第。沒有需要購買
【服務(wù)器列表】—>【彈性負(fù)載均衡ELB】—>【(自定義ELB名稱)】—>【監(jiān)聽器】—>【添加監(jiān)聽器】咕村。
image.png
image.png
image.png
image.png
image.png
另外購買一個(gè)新的公網(wǎng)IP地址,綁定到此負(fù)載均衡器上面
2蚊俺、訪問Harbor界面(http://公網(wǎng)IP地址:80)
用戶名:admin 密碼:Harbor12345
image.png
image.png
部署一臺(tái) Docker 主機(jī)用于測(cè)試上傳和下載懈涛。
安裝docker軟件
Docker Registry交互默認(rèn)使用的是https,然而此處搭建的私有倉庫只提供http服務(wù),所以當(dāng)與私有倉庫交互時(shí)就會(huì)報(bào)上面的錯(cuò)誤。為了解決這個(gè)問題需要在啟動(dòng)docke時(shí)增加啟動(dòng)參數(shù)為默認(rèn)使用http訪問泳猬。這個(gè)是在客戶機(jī)的docker配置文件里添加的(即上傳鏡像到私有倉庫里或從私有倉庫下載鏡像的客戶機(jī))
harbor主機(jī)拷貝docker軟件包到docker主機(jī)
[root@harbor harbor]# cd /root/harbor/
[root@harbor harbor]# scp docker-ce-18.06.3.ce-3.el7.x86_64.rpm 192.168.1.68:/root/
docker主機(jī)安裝docker軟件包,更改配置文件
[root@docker ~]# yum -y install docker-ce-18.06.3.ce-3.el7.x86_64.rpm
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
12 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.100:80
[root@docker ~]# systemctl daemon-reload && systemctl enable docker && systemctl start docker
測(cè)試登錄Harbor鏡像倉庫批钠。
[root@docker ~]# docker login http://192.168.1.100:80
Username: admin
Password: Harbor12345
Login Succeeded
#密碼信息會(huì)存儲(chǔ)在/root/.docker/config.json中
注意:如果沒有添加--insecure-registry 192.168.1.100:80,在登錄時(shí)會(huì)報(bào)以下錯(cuò)誤暂殖。
Error response from daemon: Get https://192.168.1.100:80/v2/: http: server gave HTTP response to HTTPS client
解決方法:添加參數(shù)价匠,重啟服務(wù)即可。
向私有倉庫中上傳鏡像
harbor主機(jī)上傳busybox鏡像給docker主機(jī)
[root@harbor docker]# cd /root/harbor/
[root@harbor harbor]# scp busybox.tar 192.168.1.68:/root/
#docker主機(jī)導(dǎo)入鏡像
[root@docker ~]# docker load -i busybox.tar
[root@docker ~]# docker images #查看系統(tǒng)中鏡像
[root@docker ~]# docker tag busybox:latest 192.168.1.100:80/library/busybox:latest #更改標(biāo)簽
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.67:8099/library/busybox latest be5888e67be6 2 months ago 1.22MB
busybox latest be5888e67be6 2 months ago 1.22MB
#向私有倉庫推送鏡像
[root@docker ~]# docker push 192.168.1.100:80/library/busybox:latest
The push refers to repository [192.168.1.100:80/library/busybox]
5b0d2d635df8: Pushed
latest: digest: sha256:a2490cec4484ee6c1068ba3a05f89934010c85242f736280b35343483b2264b6 size: 527
在界面中查看剛剛上傳的鏡像文件呛每。
能夠看到鏡像倉庫數(shù)為1踩窖,點(diǎn)擊項(xiàng)目名稱,查看該項(xiàng)目下的鏡像文件
image.png
點(diǎn)擊進(jìn)去晨横,可以看到上傳的鏡像
image.png
將系統(tǒng)中目前有的鏡像文件刪除, 從私有鏡像倉庫中下載鏡像
[root@docker ~]# docker rmi 192.168.1.100:80/library/busybox:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest be5888e67be6 2 months ago 1.22MB
下載鏡像
[root@docker ~]# docker pull 192.168.1.100:80/library/busybox:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.67:8099/library/busybox latest be5888e67be6 2 months ago 1.22MB
busybox latest be5888e67be6 2 months ago 1.22MB
明確的看到該鏡像的下載次數(shù)為1
image.png
點(diǎn)擊左側(cè)導(dǎo)航欄,可以看到日志信息
image.png
如果harbor停止了,可以使用如下命令啟動(dòng)
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# docker-compose up -d