原文鏈接地址:『高級(jí)篇』docker之鏡像倉(cāng)庫(kù)(20)
三步走的第二步,開(kāi)始查看鏡像倉(cāng)庫(kù),就一起學(xué)一學(xué)docker倉(cāng)庫(kù),倉(cāng)庫(kù)分2種,別人家的倉(cāng)庫(kù)也叫公共倉(cāng)庫(kù),自己的倉(cāng)庫(kù)也叫私有倉(cāng)庫(kù)。公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù)最大的卻別就是網(wǎng)速,公共倉(cāng)庫(kù)從公網(wǎng),私有倉(cāng)庫(kù)是從局域網(wǎng),速度的差別,安全性,公共的肯定沒(méi)有私有的安全,保存在自己的硬盤(pán)上是最穩(wěn)的。其實(shí)在中級(jí)的時(shí)候我已經(jīng)說(shuō)過(guò)docker倉(cāng)庫(kù)的創(chuàng)建,這次用mac本來(lái)實(shí)現(xiàn)docker倉(cāng)庫(kù)的創(chuàng)建。源碼:https://github.com/limingios/msA-docker
公有倉(cāng)庫(kù)
最權(quán)威的公有倉(cāng)庫(kù)就是hub.docker.com
打包
docker tag zookeeper:3.5 zhugeaming/zookeeper:3.5
docker login
docker push zhugeaming/zookeeper:3.5
私有倉(cāng)庫(kù)(一)
https://hub.docker.com/_/registry/
docker pull registry:2
安裝說(shuō)明
官方的安裝說(shuō)明
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
在生產(chǎn)環(huán)境下,并不能滿(mǎn)足要求,單點(diǎn)登錄,一個(gè)服務(wù)器出了問(wèn)題,另一個(gè)服務(wù)器就很難托管過(guò)來(lái),它并沒(méi)有界面,給他交互不是很方便。
所以業(yè)內(nèi)又出現(xiàn)了一個(gè)新的叫harbor,更適合生產(chǎn)環(huán)境中。
私有倉(cāng)庫(kù)(二)
https://github.com/goharbor/harbor/
詳細(xì)往下看 最終我放棄了mac下直接安裝harbor,通過(guò)vagrant的方式虛擬機(jī)來(lái)安裝harbor
準(zhǔn)備工作
選擇線下安裝
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系統(tǒng)管理,修改存儲(chǔ)路徑
vi docker-compose.yml
安裝
奇葩問(wèn)題
想在mac上安裝一個(gè)harbor 下載了harbor-offline-installer-v1.6.1.tgz
將文件放在了mac本的/user/liming/app/目錄下,并解壓
修改了配置文件和掛載文件的路徑。
運(yùn)行install的時(shí)候必須加sudo,負(fù)責(zé)權(quán)限不足,加了sudu后可以正常安裝并安裝成功。
但是剩余的問(wèn)題來(lái)了,里面的容器無(wú)法訪問(wèn)掛載的配置文件,提示權(quán)限不足。為了彌補(bǔ)權(quán)限不足的問(wèn)題,我在docker-compose.yml做了配置都增加了
privileged: true,但是不生效,困擾了幾天身邊沒(méi)有docker方面的人,幫忙解答下。
vagrant 方式安裝
https://github.com/limingios/msA-docker/tree/master/vagrant/harbor
修改host文件和端口,可以不修改端口
vi harbor.cfg
vi docker-compose.yml
安裝
./install.sh
瀏覽
ifconfig
訪問(wèn)harbor
http://172.28.128.3:8888
用戶(hù)名:admin
密碼:Harbor12345
library 公開(kāi)的所有用戶(hù)都可以push
添加項(xiàng)目micro-service,私有項(xiàng)目
點(diǎn)擊項(xiàng)目可以進(jìn)入項(xiàng)目中。
添加成員
項(xiàng)目管理員 等于 admin
開(kāi)發(fā)人員 等于 對(duì)項(xiàng)目的鏡像 有push 和pull的權(quán)限
訪客 等于 只有 pull的權(quán)限
復(fù)制功能
生產(chǎn)環(huán)境,很多的機(jī)房,每個(gè)機(jī)房之間的網(wǎng)速是很快的,但是跨機(jī)房的,可能網(wǎng)速的穩(wěn)定性和速度就差一些,每個(gè)機(jī)房部署一個(gè)harbor,在通過(guò)一個(gè)中心的harbor,當(dāng)有鏡像的自動(dòng)去同步其他的服務(wù)器,復(fù)制規(guī)則是可以針對(duì)項(xiàng)目的,每個(gè)項(xiàng)目自己的一個(gè)復(fù)制規(guī)則。
創(chuàng)建用戶(hù)
添加成員
分配開(kāi)發(fā)人員
Harbor其實(shí)操作很簡(jiǎn)單,隨便點(diǎn)點(diǎn)都了解了。
本地的微服務(wù)鏡像推送
現(xiàn)在想想辦法把鏡像都推送到mico-service里面
host文件修改
sudo vi /etc/hosts
上傳基礎(chǔ)鏡像
hub.idig88.com 已經(jīng)配置了基礎(chǔ)
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
配置地址:登錄服務(wù)器上。
vi /usr/lib/systemd/system/docker.service
service docker restart
配置地址:本機(jī)mac。修改后點(diǎn)擊app& Restart
再次上傳基礎(chǔ)鏡像
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
推送微服務(wù)到倉(cāng)庫(kù)中
已經(jīng)將基礎(chǔ)的鏡像推送到了鏡像倉(cāng)庫(kù)中,現(xiàn)在需要修改對(duì)應(yīng)的dockerfile文件,更改基礎(chǔ)鏡像的名稱(chēng)。修改配置文件
6個(gè)微服務(wù)Dockerfile
From hub.idig88.com:8888/micro-service/
6個(gè)sh腳本修改增加了推送功能
查看倉(cāng)庫(kù)
8個(gè)鏡像全部到位
PS:經(jīng)歷了2天大概做了不下20小時(shí),我最終還是放棄了mac下安裝harbor的方式,時(shí)刻要記住mac只是個(gè)編輯器,不要什么都在上邊裝,很多時(shí)候通過(guò)虛擬機(jī)更類(lèi)似生成環(huán)境。這一次說(shuō)完了docker倉(cāng)庫(kù),下次開(kāi)始服務(wù)編排工具。感覺(jué)好爽?。?/p>
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問(wèn)題,請(qǐng)?jiān)L問(wèn)西部數(shù)碼官網(wǎng):youyuetrip.com