『高級篇』docker之鏡像倉庫(20)
>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『高級篇』docker之鏡像倉庫(20)
三步走的第二步,開始查看鏡像倉庫,就一起學一學docker倉庫,倉庫分2種,別人家的倉庫也叫公共倉庫,自己的倉庫也叫私有倉庫。公共倉庫和私有倉庫最大的卻別就是網速,公共倉庫從公網,私有倉庫是從局域網,速度的差別,安全性,公共的肯定沒有私有的安全,保存在自己的硬盤上是最穩的。其實在中級的時候我已經說過docker倉庫的創建,這次用mac本來實現docker倉庫的創建。源碼:https://github.com/limingios/msA-docker
公有倉庫
最權威的公有倉庫就是hub.docker.com
- 打包
docker tag zookeeper:3.5 zhugeaming/zookeeper:3.5
docker login
docker push zhugeaming/zookeeper:3.5
私有倉庫(一)
https://hub.docker.com/_/registry/
docker pull registry:2
- 安裝說明
官方的安裝說明
docker run -d -p 5000:5000 --name registry registry:2
- push 到本地的registry
docker tag zookeeper:3.5 localhost:5000/zookeeper:3.5 docker push localhost:5000/zookeeper:3.5
在生產環境下,並不能滿足要求,單點登錄,一個服務器出了問題,另一個服務器就很難托管過來,它並沒有界面,給他交互不是很方便。
所以業內又出現了一個新的叫harbor,更適合生產環境中。
私有倉庫(二)
https://github.com/goharbor/harbor/
詳細往下看 最終我放棄了mac下直接安裝harbor,通過vagrant的方式虛擬機來安裝harbor
- 準備工作
選擇線下安裝
cp Downloads/harbor-offline-installer-v1.6.1.tgz ~/app/ cd ~/app tar -xvf harbor-offline-installer-v1.6.1.tgz
- 修改配置文件
修改紅色部分
cd harbor
ll
vi harbor.cfg
方便管理,mac系統管理,修改存儲路徑
vi docker-compose.yml
- 安裝
- 奇葩問題
想在mac上安裝一個harbor 下載了harbor-offline-installer-v1.6.1.tgz
- 將文件放在了mac本的/user/liming/app/目錄下,並解壓
- 修改了配置文件和掛載文件的路徑。
- 運行install的時候必須加sudo,負責權限不足,加了sudu後可以正常安裝並安裝成功。
- 但是剩余的問題來了,裏面的容器無法訪問掛載的配置文件,提示權限不足。為了彌補權限不足的問題,我在docker-compose.yml做了配置都增加了
privileged: true,但是不生效,困擾了幾天身邊沒有docker方面的人,幫忙解答下。
vagrant 方式安裝
https://github.com/limingios/msA-docker/tree/master/vagrant/harbor
- 修改host文件和端口,可以不修改端口
vi harbor.cfg
vi docker-compose.yml
- 安裝
./install.sh
-
瀏覽
ifconfig
- 訪問harbor
http://172.28.128.3:8888
用戶名:admin
密碼:Harbor12345
library 公開的所有用戶都可以push
添加項目micro-service,私有項目
點擊項目可以進入項目中。
- 添加成員
- 項目管理員 等於 admin
- 開發人員 等於 對項目的鏡像 有push 和pull的權限
- 訪客 等於 只有 pull的權限
- 復制功能
生產環境,很多的機房,每個機房之間的網速是很快的,但是跨機房的,可能網速的穩定性和速度就差一些,每個機房部署一個harbor,在通過一個中心的harbor,當有鏡像的自動去同步其他的服務器,復制規則是可以針對項目的,每個項目自己的一個復制規則。
- 創建用戶
- 添加成員
分配開發人員
Harbor其實操作很簡單,隨便點點都了解了。
本地的微服務鏡像推送
現在想想辦法把鏡像都推送到mico-service裏面
- host文件修改
sudo vi /etc/hosts
- 上傳基礎鏡像
hub.idig88.com 已經配置了基礎
docker tag java:openjdk-8 hub.idig88.com:8888/micro-service/java:openjdk-8
The push refers to repository [hub.idig88.com:8888/micro-service/java]
Get https://hub.idig88.com:8888/v2/: http: server gave HTTP response to HTTPS client
- 配置地址:登錄服務器上。
vi /usr/lib/systemd/system/docker.service
service docker restart
配置地址:本機mac。修改後點擊app& Restart
- 再次上傳基礎鏡像
docker login http://hub.idig88.com:8888 -u liming -p 密碼 docker push hub.idig88.com:8888/micro-service/java:openjdk-8 docker tag python:3.6 hub.idig88.com:8888/micro-service/python:3.6 docker push hub.idig88.com:8888/micro-service/python:3.6
推送微服務到倉庫中
已經將基礎的鏡像推送到了鏡像倉庫中,現在需要修改對應的dockerfile文件,更改基礎鏡像的名稱。修改配置文件
- 6個微服務Dockerfile
From hub.idig88.com:8888/micro-service/
- 6個sh腳本修改增加了推送功能
查看倉庫
8個鏡像全部到位
PS:經歷了2天大概做了不下20小時,我最終還是放棄了mac下安裝harbor的方式,時刻要記住mac只是個編輯器,不要什麽都在上邊裝,很多時候通過虛擬機更類似生成環境。這一次說完了docker倉庫,下次開始服務編排工具。感覺好爽啊!
『高級篇』docker之鏡像倉庫(20)