Docker倉庫(Repository)
title: Docker倉庫(Repository)
tags: Docker
在前面的幾篇文章中,我們簡單的提及了Docker官方的倉庫Docker Hub,本文將詳細的介紹倉庫的使用,並且搭建出自己的私人倉庫。
Docker Hub
目前Docker官方維護了一個公共倉庫https://hub.docker.com, 其中已經包括100000+個的映象。大部分需求都可以通過在 Docker hub中直接下載映象來實現,
一、登入
可以通過執行 docker login
命令來輸入使用者名稱、密碼登入。
二、基本操作
使用者無需登入即可通過docker search
命令來查詢官方倉庫中的映象,並利用docker pull
命令下載到本地。
1.搜尋映象
例:
docker search centos
我們可以將這些映象資源分為兩類。一種是類似 centos這樣的基礎映象,稱為基礎或根映象。這些映象是由 Docker公司建立、驗證、支援、提供。這樣的映象往往使用單個單詞作為名字。還有一種型別,比如tutum/centos 映象,它是由 DockerHub的使用者 tutum建立並維護的,帶有使用者名稱稱為字首,表明是某使用者的某倉庫。可以通過使用者名稱稱字首username/來指定使用某個使用者提供的映象,比如tutum使用者的映象字首為 tutum/ 。
另外,在查詢的時候通過-s N引數可以指定僅顯示評價為N星以上的映象。
例:
docker search -s 3 centos
2.拉取映象
我們這裡下載官方提供的映象。
例:docker pull centos
3.將映象推送到Docker Hub
當然我們也可以上傳映象,上傳映象必須要使用docker login
分享的image一定要以自己docker使用者名稱開頭,如果不加自己的使用者名稱,Docker會認為這是一個root倉庫,root倉庫是由Docker公司管理的,因此會拒絕我們都上傳請求。所以我們必須要在前面新增使用者名稱,例如:clown95/centos,還有在上傳我們的映象之前,如果你沒設定tag,那麼現在我們需要設定下映象的tag,如:
docker tag centos clown95/centos
,如果不經過這一步,docker會提示我們An image does not exist locally with the tag: clown95/centos
。
例:docker push clown95/centos
4.分享映象
當上傳好映象後,我們就可以分享給好友使用了。
注意:如果需要分享自己的映象,一般不建議分享image,通常建議分享Dockerfile。
5.檢視映象詳情資訊
使用docker inspect
命名來檢視我們剛剛提交到映象詳情資訊。
docker inspect clown95/centos
三、與gitHub關聯
1.登入上你的Docker Hub
2. 選擇setting
3. 選擇Linked Accounts & Services -> Link gitHub
4. 點選select
5.
6. 登入你的gitHub賬號
7. 成功關聯
建立和使用私有倉庫
顯然,擁有 Docker映象的一個公共的 Registry非常有用。但是,有時候我們可能希望構建和儲存包含不想被公開的資訊或資料的映象。這時候我們有以下兩種選擇
- 利用 Docker hub上的私有倉庫。
- 在防火牆後面執行你自己的 Registry
一、執行私人倉庫
感謝 Docker公司的團隊開源了他們用於執行 Docker Registry的程式碼,這樣我們就可以基於此程式碼在內部執行自己的 Registry。目前 Registry還不支援使用者介面,只能以AP服務的方式來執行。
例:
docker run -d -p 5000:5000 registry:2
二、推送映象到私人倉庫
現在我們想要把本機的clown95/centos上傳到我們的私人倉庫, 我們先使用docker images
來檢視下clown95/centos的ID ,我這裡為75835a67d134
,接著我們需要再映象名簽名加上主機名和埠字首。 10.211.55.3
是我的主機名,實際操作根據自己的情況來。
例:
docker tag 75835a67d134 10.211.55.3:5000/clown95/centos
映象標籤打完之後,我們就應該進入最關鍵的一步了,通過docker push
命令將映象推送到我們的倉庫。
例:
docker push 10.211.55.3:5000/clown95/centos
注意:私人倉庫必須要一直執行才能上傳,可以想象成後臺伺服器。
三、可能遇到的錯誤
可能有很人一直上傳不了,提示dial tcp xxx.xxx.xxx.xxx:5000: connection refused
。這是因為Docker從1.3.X之後,與docker registry互動預設使用的是https,然而此處搭建的私有倉庫只提供http服務,所以當與私有倉庫互動時就會報上面的錯誤。
解決方案:
1.建立一個daemon.json檔案
touch /etc/docker/daemon.json
2.編輯json檔案
vi /etc/docker/daemon.json
加入本地registry的地址, 如:
{ "insecure-registries":["10.211.55.3:5000"] }
3.然後重啟docker服務和本地倉庫:
service docker restart
docker run -d -p 5000:5000 registry:2
四、從私人倉庫拉取映象
最後我們依然通過docker pull
拉取映象,相比於官方倉庫拉取有所不同,需要再映象名字前面新增我們的私人主機地址加埠。
docker pull 10.211.55.3:5000/clown95/centos