倉(cāng)庫(kù)(Repository)是集中存放鏡像的地方洁闰。
一個(gè)容易與之混淆的概念是注冊(cè)服務(wù)器(Registry)末早。
注冊(cè)服務(wù)器是存放倉(cāng)庫(kù)的具體服務(wù)器卵惦,每個(gè)服務(wù)器上可以有多個(gè)倉(cāng)庫(kù)歉备,每個(gè)倉(cāng)庫(kù)下面有多個(gè)鏡像。
倉(cāng)庫(kù)可以被認(rèn)為是一個(gè)具體的項(xiàng)目或目錄咸灿。
倉(cāng)庫(kù)分為公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù)构订,下面將分別介紹如何使用DockerHub官方倉(cāng)庫(kù)進(jìn)行登錄、下載等基本操作避矢。
Docker Hub
目前 Docker 官方維護(hù)了一個(gè)公共倉(cāng)庫(kù) https://hub.docker.coom,其中已包括15000 多個(gè)的鏡像悼瘾。大部分需求都可以通過(guò)在 Docker Hub 中下載鏡像來(lái)實(shí)現(xiàn)囊榜。
登錄
通過(guò)執(zhí)行 docker login 命令來(lái)輸入用戶名、密碼和郵箱來(lái)完成注冊(cè)和登錄亥宿。注冊(cè)成功后卸勺,本地用戶目錄的.dockercfg 中將保存用戶的認(rèn)證信息。
基本操作
用戶無(wú)需登錄即可通過(guò) docker search 命令來(lái)查找官方倉(cāng)庫(kù)中的鏡像烫扼,并利用docker pull 命令來(lái)將它下載到本地曙求。
例如:以centos為關(guān)鍵詞進(jìn)行搜索:
root@localhost:~# docker search centos
例如:下載官方的centos 鏡像到本地如下所示:
root@localhost:~# sudo docker pull centos
用戶也可以在登錄后通過(guò) docker push 命令來(lái)將本地鏡像推送到 Docker Hub。
創(chuàng)建和使用私有倉(cāng)庫(kù)
使用 registry 鏡像創(chuàng)建私有倉(cāng)庫(kù)
自動(dòng)下載并店一個(gè) registry 容器映企,創(chuàng)建本地的私有倉(cāng)庫(kù)服務(wù)圆到。
root@localhost:~# sudo docker run -d -p 5000:5000 registry
默認(rèn)情況下,會(huì)將倉(cāng)庫(kù)創(chuàng)建在容器的 /tmp/registry 目錄下卑吭。通過(guò) -v 參數(shù)將鏡像文件存放在本地指定的路徑上。
例如下南的例子將上傳的鏡像放到 /opt/data/registry 目錄:
root@localhost:~# sudo docker run -d -p 5001:5001 -v /opt/data/registry:/tmp/registry registry
此時(shí)马绝,在本地將啟動(dòng)一個(gè)私有倉(cāng)庫(kù)服務(wù)豆赏,監(jiān)聽(tīng)端口為 5001。
管理私有倉(cāng)庫(kù)鏡像
1.在本機(jī)搭建私有倉(cāng)庫(kù),并查看IP為:10.0.2.2
root@localhost:~# sudo docker run -d -p 5000:5000 registry
2.然后在虛擬機(jī)里查看系統(tǒng)已有鏡像:
root@localhost:~# sudo docker images
3.使用 docker tag 命令將這個(gè)鏡像標(biāo)記為10.0.2.2:5000/test
root@localhost:~# sudo docker tag registry:latest
4.使用 docker push 上傳標(biāo)記的鏡像:
root@localhost:~# sudo docker push 10.0.2.2:5000/test
5.用 curl 查看倉(cāng)庫(kù) 10.0.2.2:5000 中的鏡像:
root@localhost:~# curl http://10.0.2.2:5000/v1/search
在結(jié)果中可以看到{“description": "", "name": "library/test"},表明鏡像已經(jīng)成功上傳富稻。
現(xiàn)在可以到任務(wù)一臺(tái)能訪問(wèn)10.0.2.2 地址的機(jī)器去下載這個(gè)鏡像:
root@localhost:~# sudo docker pull 10.0.2.2:5000/test
小結(jié)
倉(cāng)庫(kù)概念的引入掷邦,為 Docker 鏡像文件的分發(fā)和管理提供了便捷的途徑。
在企業(yè)的生產(chǎn)環(huán)境中椭赋,一般使用私有倉(cāng)庫(kù)來(lái)維護(hù)內(nèi)部鏡像抚岗。
參考文檔
《Docker 技術(shù)入門(mén)與實(shí)戰(zhàn)》第5章 倉(cāng)庫(kù)