倉庫
倉庫(Repository)是集中存放鏡像的地方垮庐。一個(gè)容易與之混淆的概念是注冊(cè)服務(wù)器(Registry)。實(shí)際上注冊(cè)服務(wù)器是存放倉庫的具體服務(wù)器吕嘀,每個(gè)服務(wù)器上可以有多個(gè)倉庫,而每個(gè)倉庫下面有多個(gè)鏡像。由此可以理解為倉庫是一個(gè)具體的項(xiàng)目或目錄酌住。例如對(duì)于倉庫地址dl.dockerpool.com/ubuntu來說,dl.dockerpool.com是注冊(cè)服務(wù)器地址阎抒,ubuntu是倉庫名酪我。
倉庫又分為公共倉庫和私有倉庫,本章介紹如何使用DockerHub官方倉庫進(jìn)行登錄挠蛉、下載等操作祭示,以及使用DockerPool社區(qū)提供的倉庫下載鏡像,最后還介紹了創(chuàng)建和使用私有倉庫谴古。
Docker Hub
目前docker官方維護(hù)了一個(gè)公共倉庫https://hub.docker.com质涛,大部分需求都可以通過在Docker Hub中直接下載鏡像來實(shí)現(xiàn)。
登錄
可以通過docker login命令來輸入用戶名掰担、密碼和郵箱來完成注冊(cè)和登錄汇陆,注冊(cè)成功后,本地用戶目錄的.dockercfg中將保存用戶的認(rèn)證信息带饱。
基本操作
用戶無需登錄即可通過docker search 命令來查找官方倉庫中的鏡像毡代,并通過docker pull命令來將他下載至本地。
例如以centos為關(guān)鍵詞進(jìn)行搜索:
docker search centos
根據(jù)是否為官方提供勺疼,可將這些鏡像資源分為兩類教寂。一種是類似centos這樣的基礎(chǔ)鏡像,稱為基礎(chǔ)或根鏡像执庐。這些鏡像由Docker公司創(chuàng)建酪耕、驗(yàn)證、支持和提供轨淌。這樣的鏡像往往使用單個(gè)單詞作為名字迂烁。
還有一種類型看尼,比如ansible/centos7-ansible鏡像,它是由DockerHub的用戶ansible創(chuàng)建并維護(hù)的盟步,帶有用戶名稱為前綴藏斩,表明是某用戶的某倉庫。
另外却盘,在查找的時(shí)候通過-s N參數(shù)可以指定僅顯示評(píng)價(jià)為N星以上的鏡像狰域。
自動(dòng)創(chuàng)建
自動(dòng)創(chuàng)建(Automated Builds)功能對(duì)于需要經(jīng)常升級(jí)鏡像內(nèi)程序來說十分方便,有時(shí)候谷炸,用戶創(chuàng)建了鏡像北专,安裝了某軟件,運(yùn)行了自己的代碼工程等旬陡。如果軟件發(fā)布新版本則需要手動(dòng)更新鏡像拓颓。
而自動(dòng)創(chuàng)建功能使得用戶通過Docker Hub指定跟蹤一個(gè)目標(biāo)網(wǎng)站(目前支持GitHub或BitBucket)上的項(xiàng)目,一旦發(fā)現(xiàn)新的提交描孟,則自動(dòng)執(zhí)行創(chuàng)建驶睦。
包括如下步驟:
- 創(chuàng)建并登陸Docker Hub、目標(biāo)網(wǎng)站(GitHub)匿醒,在目標(biāo)網(wǎng)站中連接賬戶到Docker Hub
- 在Docker Hub中配置一個(gè)自動(dòng)創(chuàng)建
- 選取一個(gè)目標(biāo)網(wǎng)站(GitHub)中的項(xiàng)目(需要含Dockerfile)和分支
- 指定Dockerfile的位置场航,并提交創(chuàng)建
之后,可以在Docker Hub的“自動(dòng)創(chuàng)建”頁面中跟蹤每次創(chuàng)建的狀態(tài)廉羔。
創(chuàng)建和使用私有倉庫
使用registry鏡像創(chuàng)建私有倉庫
安裝Docker后溉痢,可以通過官方提供的registry鏡像來簡單搭建一套本地私有倉庫環(huán)境:
docker run -d -p 5000:5000 registry
這將自動(dòng)下載并啟動(dòng)一個(gè)registry容器,創(chuàng)建本地的私有倉庫服務(wù)憋他。默認(rèn)情況下孩饼,會(huì)將倉庫創(chuàng)建在容器的/tep/registry目錄下,可以通過-v參數(shù)來將鏡像文件存放在本地的指定路徑上
例如下面的例子竹挡,將上傳的鏡像放到/opt/data/registry目錄:
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
此時(shí)镀娶,在本地將啟動(dòng)一個(gè)私有倉庫服務(wù),監(jiān)聽端口為5000揪罕。
管理私有倉庫鏡像
首先搭建私有倉庫梯码,地址為:10.0.2.2:5000,然后在虛擬機(jī)(ubuntu14.04)里測(cè)試上傳和下載鏡像好啰。使用docker tag命令將這個(gè)鏡像標(biāo)記為10.0.2.2/test(格式為docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME:[:TAG]):
docker tag ubuntu:14.04 10.0.2.2:5000
使用docker push上傳標(biāo)記的鏡像:
docker push 10.0.2.2:5000/test
使用curl查看倉庫10.0.2.2:5000中的鏡像:
curl http://10.0.2.2:5000/v1/search
若看到{"description":"","name":"library/test"}轩娶,表明鏡像已經(jīng)上傳成功了。現(xiàn)在可以從任意一臺(tái)能訪問10.0.2.2地址的機(jī)器去下載這個(gè)鏡像了:
docker pull 10.0.2.2:5000/test