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

docker創建私有倉庫

-c 用戶目錄 https協議 roc 防火墻 搜索 -o 基本 serve

倉庫(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/con?g.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

 [root@localhost ~]# systemctl daemon-reload 
 [root@localhost ~]# systemctl restart docker.service

或者修改/etc/docker/daemon.json文件也可以,修改完後重啟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

docker創建私有倉庫