五、【Docker筆記】Dockers倉庫
- 2020 年 4 月 8 日
- 筆記
倉庫是集中存放鏡像的地方,倉庫的概念不要與註冊服務器做混淆。註冊服務器是存放倉庫的具體服務器,每個服務器上可能有多個倉庫,一個倉庫有多個鏡像。
倉庫又可分為共有倉庫和私有倉庫,最大的共有倉庫即Docker官方提供的DockerHub。
一、Docker Hub
此為官方提供的和維護的最大公共倉庫,地址為 https://hub.docker.com 。
1、登錄
我們可以使用 docker login 命令來登錄,該命令過程需要輸入用戶名、密碼和郵箱來完成註冊和登錄,之後這些信息保存在本地的 .dockercfg 文件中。
# 0. 使用 docker login 命令登錄DockerHub $ sudo docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: cq1415583094 Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded # 1. 查看本地配置文件
2、基本操作
登錄之後,我們即可使用 docker search 命令來查找官方倉庫中的鏡像文件,找到後使用 docker pull 命令將鏡像下載到本地。
# 0. 從官方倉庫中查找 centos 鏡像 $ sudo docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 5925 [OK] ansible/centos7-ansible Ansible on Centos7 128 [OK] ... # 1. 將官方提供的鏡像下載到本地 $ sudo docker pull centos Using default tag: latest latest: Pulling from library/centos 8a29a15cefae: Pull complete Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest # 2. 將剛才下載的上傳到倉庫 # 2.1 將剛才的鏡像tag做修改 $ sudo docker tag centos:latest cq1415583094/centos:latest # 2.2 上傳自己的鏡像 $ sudo docker push cq1415583094/centos:latest The push refers to repository [docker.io/cq1415583094/centos] 0683de282177: Mounted from library/centos latest: digest: sha256:9e0c275e0bcb495773b10a18e499985d782810e47b4fce076422acb4bc3da3dd size: 529 # 3. 搜索自己的centos $ sudo docker search cq1415583094/centos
3、自動創建
當我們創建了鏡像,安裝了軟件,當此時軟件發佈了新的版本,若要更新則需要我們手動更新鏡像。而Docker為我們提供了自動創建的過程。
不過在使用該功能時,需要我們通過DockerHub指定跟蹤一個目標網站(支持GitHub/BitBucket)上的項目,若發現項目有新的提交則自動創建。關於配置自動創建步驟如下:
-
創建並登錄DockerHub以及目標網站。並在目標網站連接賬戶到DockerHub。
-
在DockerHub上配置一個自動創建。
-
選取一個目標網站上的項目和分支。當然該項目需要含Dockerfile。
-
指定Dockerfile的位置,並提交創建。
二、DaoCloud
Docker官方倉庫有時訪問比較慢,此時可以使用國內提供的倉庫,目前國內的倉庫有DaoCloud,地址為 https://hub.daocloud.io/ ,在倉庫中可以搜索到centos的各個版本。
# 從DaoCloud倉庫拉取centos7鏡像 $ sudo docker pull daocloud.io/library/centos:7 ab5ef0e58194: Pull complete Digest: sha256:285bc3161133ec01d8ca8680cd746eecbfdbc1faa6313bd863151c4b26d7e5a5 Status: Downloaded newer image for daocloud.io/library/centos:7 daocloud.io/library/centos:7 # 查看鏡像 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE daocloud.io/library/centos 7 5e35e350aded 4 months ago 203MB
三、創建和使用私有倉庫
公司中一般都有自己的一個私有倉庫,對於私有倉庫中的鏡像也只是公司內部使用。那麼我們就來創建一個私有倉庫。
1、使用registry鏡像創建私有倉庫
# 0. 使用 registry 鏡像來搭建私有倉庫, 並將容器中的 5000端口對應系統的 5000端口 $ sudo docker run -d -p 5000:5000 registry
這樣我們的私有倉庫即搭建完成,對應的地址為 192.168.0.128:5000
2、管理私有倉庫鏡像
2.1、上傳鏡像到私有倉庫
# 0. 查看本地cnetos鏡像 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 5e35e350aded 4 months ago 203MB # 1. 修改tag為私有倉庫的tag $ sudo docker tag centos:7 192.168.0.128:5000/centos:7 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v1.0 0f5b15a68f76 14 hours ago 64.2MB test latest e5bc93985af0 2 days ago 64.2MB user/test latest e5bc93985af0 2 days ago 64.2MB ubuntu latest 4e5021d210f6 2 weeks ago 64.2MB registry latest 708bc6af7e5e 2 months ago 25.7MB cq1415583094/centos latest 470671670cac 2 months ago 237MB centos latest 470671670cac 2 months ago 237MB daocloud.io/library/centos 7 5e35e350aded 4 months ago 203MB centos 7 5e35e350aded 4 months ago 203MB [root@localhost opt]# sudo docker tag centos:7 192.168.0.128:5000/centos:7 [root@localhost opt]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.0.128:5000/centos 7 5e35e350aded 4 months ago 203MB # 2. 使用 docker push 命令上傳 $ sudo docker push 192.168.0.128:5000/centos # 說明:有時在push中會報https錯 這因為是docker私有倉庫服務器,默認是基於https傳輸的,所以我們需要在客戶端做相關設置,不使用https傳輸。 $ vim /etc/docker/daemon.json { "registry-mirrors": ["https://hub.docker.com"], "insecure-registries":["192.168.0.128:5000"] } $ sudo systemctl daemon-reload $ sudo systemctl restart docker