1. 程式人生 > >docker建立私有倉庫

docker建立私有倉庫

倉庫(Repository)是集中存放映象的地方。
一個容易混淆的概念是註冊伺服器(Registry)。實際上註冊伺服器是管理倉庫的具體服務 器,每個伺服器上可以有多個倉庫,而每個倉庫下面有多個映象。從這方面來說,倉庫可以 被認為是一個具體的專案或目錄。例如對於倉庫地址 docker.sina.com.cn/centos:centos63 來說,docker.sina.com.cn 是註冊伺服器地址,centos 是倉庫名,centos63 是倉庫的tag。

Docker Hub 官方倉庫
目前 Docker 官方維護了一個公共倉庫 Docker Hub,其中已經包括了超過 15,000 的映象。大部分需求,都可以通過在 Docker Hub 中直接下載映象來實現。
註冊&登入
可以通過命令列執行docker login 命令來輸入使用者名稱、密碼和郵箱來完成註冊和登入。註冊成功後,本地使用者目錄的 .docker/config.json中將儲存使用者的認證資訊。

#docker login

基本操作
使用者無需登入即可通過docker search 命令來查詢官方倉庫中的映象,並利用docker pull 命令來將它下載到本地。例如以 centos 為關鍵詞進行搜尋:

#docker search centos

可以看到返回了很多包含關鍵字的映象,其中包括映象名字、描述、星級(表示該映象的受 歡迎程度)、是否官方建立、是否自動建立。官方的映象說明是官方專案組建立和維護的, automated 資源允許使用者驗證映象的來源和內容。
根據是否是官方提供,可將映象資源分為兩類。一種是類似 centos 這樣的基礎映象,被稱為基礎或根映象。這些基礎映象是由 Docker 公司建立、驗證、支援、提供。這樣的映象往往使用單個單詞作為名字。還有一種型別,比如喫anon/centos 映象,它是由 Docker 的使用者建立並維護的,往往帶有使用者名稱稱字首。可以通過字首user_name/ 來指定使用某個使用者提供的映象,比如喫anon使用者。另外,在查詢的時候通過 ‐s N 引數可以指定僅顯示評價為 N 星以上的映象。
建立自己的私有倉庫
1、通過官方的registry容器來執行
2、本地安裝
我們通過registry這個官方的容器來構建私有倉庫
1、首先給倉庫伺服器設定IP地址資訊,本案例為20.14.3.122/24

預環境要求:安裝docker-ce程式,並設定開機啟動
2、檢視docker hub上的registry容器映象

#docker search registry

將registry映象拉到本地docker pull registry

#docker pull registry

啟動容器:

 #docker run -d -p 5000:5000 --restart=always -v
 /opt/registry:/var/lib/registry registry

新registry的倉庫目錄是在/var/lib/registry
-v選項指定將/opt/registry/目錄掛載給/var/lib/registry/

#docker ps

3、在防火牆裡面放行TCP 5000埠

 firewall-cmd --add-port=5000/tcp   立即生效
 firewall-cmd --add-port=5000/tcp --permanent 永久生效

4、驗證
使用curl http://20.14.3.122:5000/v2/_catalog能看到json格式的返回值時,說明registry已經執行起來了

#curl http://20.14.3.122:5000/v2/_catalog

5、dockers registry V2 版本客戶端預設使用https協議去push映象到倉庫伺服器,而現在我們的倉庫伺服器只配置了支援http,所以客戶端會push映象失敗

 #docker tag hello-world:latest 20.14.3.122:5000/hello-wold:latest
 #docker push 20.14.3.122:5000/hello-world

錯誤訊息為:http: server gave HTTP response to HTTPS client
如要希望docker客戶端支援http協議,需在啟動docker時加入引數 --insecure- registry your_registry_ip:port
編輯/usr/lib/systemd/system/docker.service檔案
增加--insecure-registry引數
docker建立私有倉庫

重新啟動docker

 [[email protected] ~]# systemctl daemon-reload 
 [[email protected] ~]# systemctl restart docker.service

或者修改/etc/docker/daemon.json檔案也可以,修改完後重啟docker
docker建立私有倉庫
然後再push映象,發現成功

 #docker image list
 #docker push 20.14.3.122:5000/hello-world
 #curl http://20.14.3.122:5000/v2/_catalog

在其他電腦上也可以pull下來

#docker pull 20.14.3.122:5000/hello-world