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/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創建私有倉庫