Docker Hub 倉(cāng)庫(kù)使用绵咱,及搭建 Docker Registry

目前 Docker 官方維護(hù)了一個(gè)公共倉(cāng)庫(kù) Docker Hub砌梆,其中已經(jīng)包括了數(shù)量超過(guò) 15,000 的鏡像濒憋。大部分需求都可以通過(guò)在 Docker Hub 中直接下載鏡像來(lái)實(shí)現(xiàn)幌墓。

Docker Hub

注冊(cè)&&登錄

你可以在 https://cloud.docker.com 免費(fèi)注冊(cè)一個(gè) Docker 賬號(hào)但壮。

可以通過(guò)執(zhí)行 docker login 命令交互式的輸入用戶(hù)名及密碼來(lái)完成在命令行界面登錄 Docker Hub

你可以通過(guò) docker logout 退出登錄常侣。

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: souyunku
Password: 輸入密碼
Login Succeeded

拉取鏡像

你可以通過(guò) docker search 命令來(lái)查找官方倉(cāng)庫(kù)中的鏡像蜡饵,并利用 docker pull 命令來(lái)將它下載到本地。

例如以 nginx 為關(guān)鍵詞進(jìn)行搜索:

$ docker search nginx
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        7636                [OK]                
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker con…   1214                                    [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable of…   490                                     [OK]
jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as p…   279                                     [OK]
kong                                                   Open-source Microservice & API Management la…   143                 [OK]                
webdevops/php-nginx                                    Nginx with PHP-FPM                              93                                      [OK]
kitematic/hello-world-nginx                            A light-weight nginx container that demonstr…   88                                      

可以看到返回了很多包含關(guān)鍵字的鏡像胳施,其中包括鏡像名字溯祸、描述、收藏?cái)?shù)(表示該鏡像的受關(guān)注程度)、是否官方創(chuàng)建焦辅、是否自動(dòng)創(chuàng)建博杖。

官方的鏡像說(shuō)明是官方項(xiàng)目組創(chuàng)建和維護(hù)的,automated 資源允許用戶(hù)驗(yàn)證鏡像的來(lái)源和內(nèi)容筷登。

根據(jù)是否是官方提供剃根,可將鏡像資源分為兩類(lèi)。

一種是類(lèi)似 centos 這樣的鏡像前方,被稱(chēng)為基礎(chǔ)鏡像或根鏡像狈醉。這些基礎(chǔ)鏡像由 Docker 公司創(chuàng)建、驗(yàn)證惠险、支持苗傅、提供。這樣的鏡像往往使用單個(gè)單詞作為名字莺匠。

還有一種類(lèi)型金吗,比如 jwilder/nginx-proxy 鏡像十兢,它是由 Docker 的用戶(hù)創(chuàng)建并維護(hù)的趣竣,往往帶有用戶(hù)名稱(chēng)前綴『滴铮可以通過(guò)前綴 username/ 來(lái)指定使用某個(gè)用戶(hù)提供的鏡像遥缕,比如 jwilder 用戶(hù)。

另外宵呛,在查找的時(shí)候通過(guò) --filter=stars=N 參數(shù)可以指定僅顯示收藏?cái)?shù)量為 N 以上的鏡像单匣。

下載官方 nginx 鏡像到本地。

$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e7bb522d92ff: Pull complete 
6edc05228666: Pull complete 
cd866a17e81f: Pull complete 
Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1
Status: Downloaded newer image for nginx:latest
root@souyunku:~/mydocker#

推送鏡像

我們先制作一個(gè)鏡像

先制作一個(gè)鏡像

創(chuàng)建Dockerfile文件

$ touch Dockerfile

Dockerfile內(nèi)容如下

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

生成鏡像

$ docker build -t nginx:v1 .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM nginx
 ---> 3f8a4339aadd
Step 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
 ---> Using cache
 ---> 4ac2d12f10cd
Successfully built 4ac2d12f10cd
Successfully tagged nginx:v1

查看鏡像

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               v1                  4ac2d12f10cd        23 minutes ago      108MB

推送制作的鏡像

用戶(hù)也可以在登錄后通過(guò) docker push 命令來(lái)將自己的鏡像推送到 Docker Hub宝穗。

以下命令中的 souyunku 請(qǐng)?zhí)鎿Q為你的 Docker 賬號(hào)用戶(hù)名户秤。

標(biāo)記本地鏡像,將其歸入souyunku倉(cāng)庫(kù)

$ docker tag nginx:v1 souyunku/nginx:v1

查看本地鏡像

$ docker images souyunku/nginx:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
souyunku/nginx      v1                  4ac2d12f10cd        41 minutes ago      108MB

推送鏡像

$ docker push souyunku/nginx:v1
The push refers to repository [docker.io/souyunku/nginx]
241cbe531d78: Pushed 
a103d141fc98: Pushed 
73e2bd445514: Pushed 
2ec5c0a4cb57: Pushed 
v1: digest: sha256:aae4f5b270340907da80b220315a0e82a15a9debc4347023a4d6c7a96b9cee40 size: 1155

拉取推送的鏡像

先把本地鏡像刪除

$ docker rmi souyunku/nginx:v1
Untagged: souyunku/nginx:v1

$ docker rmi e0b
Untagged: nginx:v1
Deleted: sha256:e0bd56806499c0cec4534fe5a85525e45a4d12d8be188d5d498385b0ac36f33e
Deleted: sha256:67d1bbe70151d306c0014d6e3f5c1734ba74849b8989bab46e11f560ae8ec46d

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              3f8a4339aadd        5 days ago          108MB

拉取自己docker hub的鏡像

$ docker pull souyunku/nginx:v1
v1: Pulling from souyunku/nginx
e7bb522d92ff: Already exists 
6edc05228666: Already exists 
cd866a17e81f: Already exists 
9c3032d48351: Pull complete 
Digest: sha256:aae4f5b270340907da80b220315a0e82a15a9debc4347023a4d6c7a96b9cee40
Status: Downloaded newer image for souyunku/nginx:v1

$ docker images souyunku/nginx:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
souyunku/nginx      v1                  4ac2d12f10cd        2 hours ago         108MB

私有倉(cāng)庫(kù)

有時(shí)候使用 Docker Hub 這樣的公共倉(cāng)庫(kù)可能不方便逮矛,用戶(hù)可以創(chuàng)建一個(gè)本地倉(cāng)庫(kù)供私人使用鸡号。

本節(jié)介紹如何使用本地倉(cāng)庫(kù)。

docker-registry 是官方提供的工具须鼎,可以用于構(gòu)建私有的鏡像倉(cāng)庫(kù)鲸伴。本文內(nèi)容基于 docker-registry v2.x 版本。

安裝運(yùn)行 docker-registry

容器運(yùn)行

你可以通過(guò)獲取官方 registry 鏡像來(lái)運(yùn)行晋控。

$ docker run -d -p 5000:5000 --restart=always --name registry registry

Unable to find image 'registry:latest' locally
latest: Pulling from library/registry
ab7e51e37a18: Pull complete 
c8ad8919ce25: Pull complete 
5808405bc62f: Pull complete 
f6000d7b276c: Pull complete 
f792fdcd8ff6: Pull complete 
Digest: sha256:9d295999d330eba2552f9c78c9f59828af5c9a9c15a3fbd1351df03eaad04c6a
Status: Downloaded newer image for registry:latest
10e12c6983d054da8dc85c017b93e64be0ed11858c0d43b6198bdb652a270d9e
root@souyunku:~/mydocker# docker run -d \
>     -p 5000:5000 \
>     -v /opt/data/registry:/var/lib/registry \
>     registry
469f1bbf2a25f6038795014b0d4bce5035c4c937b86f968a0bff8acd28a78720
docker: Error response from daemon: driver failed programming external connectivity on endpoint flamboyant_yalow (734bddc352cd5804aeafe4c940267954a70109eabd557481e3572adc7cc29e9c): Bind for 0.0.0.0:5000 failed: port is already allocated.

這將使用官方的 registry 鏡像來(lái)啟動(dòng)私有倉(cāng)庫(kù)汞窗。默認(rèn)情況下,倉(cāng)庫(kù)會(huì)被創(chuàng)建在容器的 /var/lib/registry 目錄下赡译。你可以通過(guò) -v 參數(shù)來(lái)將鏡像文件存放在本地的指定路徑仲吏。例如下面的例子將上傳的鏡像放到本地的 /opt/data/registry 目錄。

$ docker run -d \
    -p 5000:5000 \
    -v /opt/data/registry:/var/lib/registry \
    registry

私有倉(cāng)庫(kù)操作

查看本地鏡像

創(chuàng)建好私有倉(cāng)庫(kù)之后,就可以使用 docker tag 來(lái)標(biāo)記一個(gè)鏡像蜘矢,然后推送它到倉(cāng)庫(kù)狂男。例如私有倉(cāng)庫(kù)地址為 127.0.0.1:5000

先在本機(jī)查看已有的鏡像品腹。

$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              3f8a4339aadd        5 days ago          108MB

標(biāo)記本地鏡像

使用 docker tagnginx:latest 這個(gè)鏡像標(biāo)記為 127.0.0.1:5000/nginx:latest岖食。

格式為 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]。

$ docker tag nginx:latest 127.0.0.1:5000/nginx:latest

上傳標(biāo)記鏡像

使用 docker push 上傳標(biāo)記的鏡像,到倉(cāng)庫(kù)

$ docker push 127.0.0.1:5000/nginx:latest
The push refers to repository [127.0.0.1:5000/nginx]
a103d141fc98: Pushed 
73e2bd445514: Pushed 
2ec5c0a4cb57: Pushed 
latest: digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb size: 948

$ docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/nginx   latest              3f8a4339aadd        5 days ago          108MB

用 curl 查看倉(cāng)庫(kù)中的鏡像舞吭。

$ curl 127.0.0.1:5000/v2/_catalog
{"repositories":["nginx"]}

這里可以看到 {"repositories":["ubuntu"]}泡垃,表明鏡像已經(jīng)被成功上傳了。

下載倉(cāng)庫(kù)鏡像

先刪除已有鏡像羡鸥,再?lài)L試從私有倉(cāng)庫(kù)中下載這個(gè)鏡像蔑穴。

$ docker image rm 127.0.0.1:5000/nginx:latest
Untagged: 127.0.0.1:5000/nginx:latest
Untagged: 127.0.0.1:5000/nginx@sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb

下載鏡像

$ docker pull 127.0.0.1:5000/nginx:latest
latest: Pulling from nginx
Digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb
Status: Downloaded newer image for 127.0.0.1:5000/nginx:latest

參考:Docker — 從入門(mén)到實(shí)踐

https://www.gitbook.com/download/pdf/book/yeasy/docker_practice

Contact

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惧浴,一起剝皮案震驚了整個(gè)濱河市存和,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衷旅,老刑警劉巖捐腿,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柿顶,居然都是意外死亡茄袖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)嘁锯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宪祥,“玉大人,你說(shuō)我怎么就攤上這事家乘』妊颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵仁锯,是天一觀的道長(zhǎng)耀找。 經(jīng)常有香客問(wèn)我,道長(zhǎng)扑馁,這世上最難降的妖魔是什么涯呻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮腻要,結(jié)果婚禮上复罐,老公的妹妹穿的比我還像新娘。我一直安慰自己雄家,他們只是感情好效诅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般乱投。 火紅的嫁衣襯著肌膚如雪咽笼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天戚炫,我揣著相機(jī)與錄音剑刑,去河邊找鬼。 笑死双肤,一個(gè)胖子當(dāng)著我的面吹牛施掏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茅糜,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼七芭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蔑赘?” 一聲冷哼從身側(cè)響起狸驳,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缩赛,沒(méi)想到半個(gè)月后耙箍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峦筒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年究西,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窗慎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片物喷。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遮斥,靈堂內(nèi)的尸體忽然破棺而出峦失,到底是詐尸還是另有隱情,我是刑警寧澤术吗,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布尉辑,位于F島的核電站钧汹,受9級(jí)特大地震影響凰兑,放射性物質(zhì)發(fā)生泄漏歪玲。R本人自食惡果不足惜轿腺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一爪幻、第九天 我趴在偏房一處隱蔽的房頂上張望爱致。 院中可真熱鬧巨柒,春花似錦肪获、人聲如沸嘱么。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至几迄,卻和暖如春蔚龙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背映胁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工木羹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人解孙。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓汇跨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親妆距。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穷遂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容