Docker建立私有倉庫

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

Docker Hub 官方倉庫
目前 Docker 官方維護了一個公共倉庫 Docker Hub,其中已經包括了超過 15,000 的鏡像。大部分需求,均可以經過在 Docker Hub 中直接下載鏡像來實現。
註冊&登陸
能夠經過命令行執行docker login 命令來輸入用戶名、密碼和郵箱來完成註冊和登陸。註冊成功後,本地用戶目錄的 .docker/config.json中將保存用戶的認證信息。json

#docker logincentos

基本操做
用戶無需登陸便可經過docker search 命令來查找官方倉庫中的鏡像,並利用docker pull 命令來將它下載到本地。例如以 centos 爲關鍵詞進行搜索:服務器

#docker search centoscurl

能夠看到返回了不少包含關鍵字的鏡像,其中包括鏡像名字、描述、星級(表示該鏡像的受 歡迎程度)、是否官方建立、是否自動建立。官方的鏡像說明是官方項目組建立和維護的, automated 資源容許用戶驗證鏡像的來源和內容。
根據是不是官方提供,可將鏡像資源分爲兩類。一種是相似 centos 這樣的基礎鏡像,被稱爲基礎或根鏡像。這些基礎鏡像是由 Docker 公司建立、驗證、支持、提供。這樣的鏡像每每使用單個單詞做爲名字。還有一種類型,好比喫anon/centos 鏡像,它是由 Docker 的用戶建立並維護的,每每帶有用戶名稱前綴。能夠經過前綴user_name/ 來指定使用某個用戶提供的鏡像,好比喫anon用戶。另外,在查找的時候經過 ‐s N 參數能夠指定僅顯示評價爲 N 星以上的鏡像。
建立本身的私有倉庫
一、經過官方的registry容器來運行
二、本地安裝
咱們經過registry這個官方的容器來構建私有倉庫
一、首先給倉庫服務器設置IP地址信息,本案例爲20.14.3.122/24tcp

預環境要求:安裝docker-ce程序,並設置開機啓動
二、查看docker hub上的registry容器鏡像ide

#docker search registryurl

將registry鏡像拉到本地docker pull registry命令行

#docker pull registryrest

啓動容器:

#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

三、在防火牆裏面放行TCP 5000端口

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

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

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

五、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

[root@localhost ~]# systemctl daemon-reload 
 [root@localhost ~]# 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

相關文章
相關標籤/搜索