一、Docker Hub
??Docker官方維護(hù)了一個(gè)公共倉(cāng)庫(kù)Docker Hub浑劳,其中已經(jīng)包括了數(shù)量超過(guò)15000的鏡像阱持。大部分需求都可以通過(guò)在Docker Hub中直接下載鏡像來(lái)實(shí)現(xiàn)。
1魔熏、注冊(cè)登陸
??可以在https://hub.docker.com免費(fèi)注冊(cè)一個(gè)Docker賬號(hào)衷咽,使用docker login
輸入用戶名和密碼來(lái)完成在命令行界面登陸Docker Hub,使用docker logout
退出登錄蒜绽。
2镶骗、拉取鏡像
??可以通過(guò)docker search
命令來(lái)查找官方倉(cāng)庫(kù)中的鏡像,并利用docker pull
命令來(lái)將它下載到本地躲雅。
3鼎姊、推送鏡像
??先使用docker tag
命令為鏡像命名,再使用docker push
命令將鏡像推送至Docker Hub上相赁。
??注意:推送鏡像到Docker Hub需要先在命令行中登陸個(gè)人賬號(hào)相寇、
二、私有倉(cāng)庫(kù)
??一般基于公司內(nèi)部項(xiàng)目構(gòu)建的鏡像噪生,使用Docker Hub這樣的公共倉(cāng)庫(kù)可能不方便裆赵,這時(shí)應(yīng)該創(chuàng)建一個(gè)本地倉(cāng)庫(kù)供私人使用。docker-registry
是官方提供的工具跺嗽,可以用于構(gòu)建私有的鏡像倉(cāng)庫(kù)战授。
1、安裝運(yùn)行docker-registry
??可以通過(guò)獲取官方registry鏡像來(lái)運(yùn)行桨嫁。默認(rèn)情況下植兰,倉(cāng)庫(kù)被創(chuàng)建在容器的/var/lib/registry
目錄下,可以通過(guò)-v
參數(shù)來(lái)將鏡像文件存放在本地的指定路徑璃吧。
docker run --name registry -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry registry
2楣导、在私有倉(cāng)庫(kù)上傳、搜索畜挨、下載鏡像
(1)上傳鏡像
??創(chuàng)建好私有倉(cāng)庫(kù)之后筒繁,就可以使用 docker tag
來(lái)標(biāo)記一個(gè)鏡像噩凹,然后推送它到倉(cāng)庫(kù),先在本機(jī)查看已有的鏡像毡咏。
??使用
docker tag
將session-web:latest
這個(gè)鏡像標(biāo)記為127.0.0.1:5000/session-web:latest
驮宴,格式為:
docekr tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REGISTRY[:TAG]
??使用docker push
上傳標(biāo)記的鏡像
docker push 127.0.0.1:5000/session-web:latest
(2)搜索鏡像
??使用curl
查看倉(cāng)庫(kù)中的鏡像
curl 127.0.0.1:5000/v2/_catalog
(3)下載鏡像
??先刪除已有鏡像,再嘗試從私有倉(cāng)庫(kù)中下載這個(gè)鏡像
docker image rm 127.0.0.1:5000/session-web:latest
docker pull 127.0.0.1/session-web:latest
注意事項(xiàng):
如果不想使用127.0.0.1:5000作為倉(cāng)庫(kù)地址呕缭,比如想讓本網(wǎng)段的其他主機(jī)也能把鏡像推送到私有倉(cāng)庫(kù)堵泽。就要
把如192.168.27.133:5000
這樣的內(nèi)網(wǎng)地址作為私有倉(cāng)庫(kù)地址,這時(shí)會(huì)發(fā)現(xiàn)無(wú)法成功推送鏡像恢总。這是因?yàn)镈ocker默認(rèn)不允許非HTTPS方式推送鏡像迎罗,不過(guò)可以通過(guò)Docker的配置選項(xiàng)來(lái)取消這個(gè)限制。
??現(xiàn)在有兩臺(tái)服務(wù)器片仿,一臺(tái)是作為搭建私有倉(cāng)庫(kù)的centos服務(wù)器纹安,IP為192.168.27.133
,另一臺(tái)是從私有倉(cāng)庫(kù)下載鏡像的docker客戶端ubuntu服務(wù)器滋戳,IP為192.168.27.134
钻蔑。
??對(duì)于使用systemd
的系統(tǒng),兩臺(tái)服務(wù)器都需要在/etc/docker/daemon.json
中配置如下內(nèi)容(如果文件不存在請(qǐng)新建該文件)
{
"insecure-registries":[
"192.168.27.133:5000"
]
}
??重加載配置和重啟docker服務(wù)
systemctl daemon-reload
systemctl restart docker
??現(xiàn)在要把nginx:latest
上傳到私有倉(cāng)庫(kù)中奸鸯,應(yīng)該使用如下命令:
docker tag nginx:latest 192.168.27.133:5000/nginx:latest
docker push 192.168.27.133:5000/nginx:latest
??推送成功后查看下私有倉(cāng)庫(kù)中是否已有該鏡像:
??一切正常,從另一臺(tái)ubuntu服務(wù)器測(cè)試是否能從私有倉(cāng)庫(kù)中拉取鏡像
nginx:latest
可帽,使用命令:
docker pull 192.168.27.133:5000/nginx:latest