三步走的第二步,開始查看鏡像倉庫,就一起學一學docker倉庫,倉庫分2種,別人家的倉庫也叫公共倉庫,自己的倉庫也叫私有倉庫。公共倉庫和私有倉庫最大的卻別就是網速,公共倉庫從公網,私有倉庫是從區域網,速度的差別,安全性,公共的肯定沒有私有的安全,保存在自己的硬碟上是最穩的。其實在中級的時候我已經說過docker倉庫的創建,這次用mac本來實現docker倉庫的創建。源碼:github.com/limingios/ms

公有倉庫

最權威的公有倉庫就是hub.docker.com

  • 打包

docker tag zookeeper:3.5 zhugeaming/zookeeper:3.5
docker login
docker push zhugeaming/zookeeper:3.5

私有倉庫(一)

hub.docker.com/_/regist

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,更適合生產環境中。

私有倉庫(二)

github.com/goharbor/har

詳細往下看 最終我放棄了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

  1. 將文件放在了mac本的/user/liming/app/目錄下,並解壓
  2. 修改了配置文件和掛載文件的路徑。
  3. 運行install的時候必須加sudo,負責許可權不足,加了sudu後可以正常安裝並安裝成功。
  4. 但是剩餘的問題來了,裡面的容器無法訪問掛載的配置文件,提示許可權不足。為了彌補許可權不足的問題,我在docker-compose.yml做了配置都增加了privileged: true,但是不生效,困擾了幾天身邊沒有docker方面的人,幫忙解答下。

vagrant 方式安裝

github.com/limingios/ms

  • 修改host文件和埠,可以不修改埠

vi harbor.cfg

vi docker-compose.yml

  • 安裝

./install.sh

  • 瀏覽

ifconfig

  • 訪問harbor

172.28.128.3:8888

用戶名:admin

密碼:Harbor12345

library 公開的所有用戶都可以push

添加項目micro-service,私有項目

點擊項目可以進入項目中。

  • 添加成員
  1. 項目管理員 等於 admin
  2. 開發人員 等於 對項目的鏡像 有push 和pull的許可權
  3. 訪客 等於 只有 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/mic

  • 6個sh腳本修改增加了推送功能

查看倉庫

8個鏡像全部到位

PS:經歷了2天大概做了不下20小時,我最終還是放棄了mac下安裝harbor的方式,時刻要記住mac只是個編輯器,不要什麼都在上邊裝,很多時候通過虛擬機更類似生成環境。這一次說完了docker倉庫,下次開始服務編排工具。感覺好爽啊!


推薦閱讀:
相關文章