訪問Docker倉庫


倉庫(Repository)是集中存放鏡像的地方,分公共倉庫和私有倉庫。一個容易與之混淆的概念是注冊服務器(Registry)。實際上注冊服務器是存放倉庫的具體服務器,一個注冊服務器上可以有多個倉庫,而每個倉庫下面可以有多個鏡像。從這方面來說,可將倉庫看做一個具體的項目或目錄。

例如對於倉庫地址private-docker.com/ubuntu來說,private-docker.com是注冊服務器地址ubuntu是倉庫名

Docker Hub公共鏡像市場

目前Docker官方維護了一個公共鏡像倉庫https://hub.docker.com,其中已經包括超過15000的鏡像。大部分鏡像需求,都可以通過在Docker Hub中直接下載鏡像來實現。

1.登錄

可以通過命令行執行docker login命令來輸入用戶名、密碼和郵箱來完成注冊和登錄。注冊成功后,本地用戶目錄的.dockercfg中將保存用戶的認證信息。

登錄成功的用戶可以上傳個人制造的鏡像。

2.基本操作

用戶無需登錄即可通過docker search命令來查找官方倉庫中的鏡像,並利用docker pull命令來將它下載到本地。

例如以centos為關鍵詞進行搜索:$ docker search centos

根據是否為官方提供,可將這些鏡像資源分為兩類。另外,在查找的時候通過-s N參數可以指定僅顯示評價為N星以上的鏡像。

一種是類似centos這樣的基礎鏡像,稱為基礎或根鏡像。這些鏡像是由Docker公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。

一種是比如ansible/centos7-ansible鏡像,它是由Docker用戶ansible創建並維護的,帶有用戶名稱為前綴,表明是某用戶下的某倉庫。可以通過用戶名稱前綴user_name/鏡像名來指定使用某個用戶提供的鏡像。

下載官方centos鏡像到本地,$ docker pull centos

用戶也可以在登錄后通過docker push命令來將本地鏡像推送到Docker Hub。

3.自動創建

自動創建(Automated Builds)功能對於需要經常升級鏡像內程序來說,十分方便。

有時候,用戶創建了鏡像,安裝了某個軟件,如果軟件發布新版本則需要手動更新鏡像。而自動創建允許用戶通過Docker Hub指定跟蹤一個目標網站(目前支持GitHub或BitBucket)上的項目,一旦項目發生新的提交,則自動執行創建。

要配置自動創建,包括如下的步驟:

1)創建並登錄Docker Hub,以及目標網站;*在目標網站中連接帳戶到Docker Hub;

2)在Docker Hub中配置一個“自動創建”;

3)選取一個目標網站中的項目(需要含Dockerfile)和分支;

4)指定Dockerfile的位置,並提交創建。

之后,可以在Docker Hub的“自動創建”頁面中跟蹤每次創建的狀態。

時速雲鏡像市場

國內不少雲服務商都提供了Docker鏡像市場,下面以時速雲為例(https://hub.tenxcloud.com),介紹如何使用這些市場。 

1.查看鏡像

訪問https://hub.tenxcloud.com,即可看到已存在的倉庫和存儲的鏡像,包括Ubuntu、Java、Mongo、MySQL、Nginx等熱門倉庫和鏡像。時速雲官方倉庫中的鏡像會保持跟DockerHub中官方鏡像的同步。

2.下載鏡像

下載鏡像也是使用docker pull命令,但是要在鏡像名稱前添加注冊服務器的具體地址。格式為index.tenxcloud.com//:。

例如,要下載Docker官方倉庫中的node:latest鏡像,可以使用如下命令:$ docker pull index.tenxcloud.com/docker_library/node:latest

正常情況下,鏡像下載會比直接從DockerHub下載快得多。

通過docker images命令來查看下載到本地的鏡像:$ docker images

下載后,可以更新鏡像的標簽,與官方標簽保持一致,方便使用:

$ docker tag index.tenxcloud.com/docker_library/node:latest node:latest

另外,阿里雲等服務商也已經提供了Docker鏡像的下載服務,用戶可以根據服務質量自行選擇。

搭建本地私有倉庫

1.使用registry鏡像創建私有倉庫

安裝Docker后,可以通過官方提供的registry鏡像來簡單搭建一套本地私有倉庫環境:

$ docker run -d -p 5000:5000 registry

這將自動下載並啟動一個registry容器,創建本地的私有倉庫服務。

默認情況下,會將倉庫創建在容器的/tmp/registry目錄下。可以通過-v參數來將鏡像文件存放在本地的指定路徑

例如下面的例子將上傳的鏡像放到/opt/data/registry目錄:

$ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

此時,在本地將啟動一個私有倉庫服務,監聽端口為5000。

2.管理私有倉庫

首先查看其地址為10.0.2.2:5000。然后在虛擬機系統(Ubuntu 14.04)里測試上傳和下載鏡像。

在Ubuntu 14.04系統查看已有的鏡像:

$ docker images

REPOSITORY           TAG       IMAGE ID            CREATED      VIRTUAL SIZE

ubuntu               14.04     ba5877dc9bec        6 days ago   199.3 MB

使用docker tag命令將這個鏡像標記為10.0.2.2:5000/test

$ docker tag ubuntu:14.04 10.0.2.2:5000/test

$ docker images

REPOSITORY           TAG       IMAGE ID            CREATED      VIRTUAL SIZE

ubuntu                    14.04     ba5877dc9bec        6 days ago   199.3 MB

10.0.2.2:5000/test   latest    ba5877dc9bec        6 days ago   199.3 MB

使用docker push上傳標記的鏡像:

$ docker push 10.0.2.2:5000/test

用curl查看倉庫10.0.2.2:5000中的鏡像:

$ curl http://10.0.2.2:5000/v1/search

{"num_results": 1, "query""""results": [{"description""""name": "library/test"}]}

在結果中可以看到{"description":"","name":"library/test"},表明鏡像已經成功上傳了。

現在可以到任意一台能訪問到10.0.2.2地址的機器去下載這個鏡像了。比較新的Docker版本對安全性要求較高,會要求倉庫支持SSL/TLS證書。對於內部使用的私有倉庫,可以自行配置證書或關閉對倉庫的安全性檢查。

首先,修改Docker daemon的啟動參數,添加如下參數,表示信任這個私有倉庫,不進行安全證書檢查:

DOCKER_OPTS="--insecure-registry 10.0.2.2:5000"

之后重啟Docker服務,並從私有倉庫中下載鏡像到本地:

$ sudo service docker restart

$ docker pull 10.0.2.2:5000/test

$ docker images

REPOSITORY              TAG         IMAGE ID       CREATED      VIRTUAL SIZE

10.0.2.2:5000/test      latest      ba5877dc9bec   6 days ago   199.3 MB

下載后,還可以添加一個更通用的標簽ubuntu:14.04:

$ docker tag 10.0.2.2:5000/test ubuntu:14.04

如果要使用安全證書,用戶也可以從較知名的CA服務商(如verisign)申請公開的SSL/TLS證書,或者使用openssl等軟件來自行生成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM