五、【Docker筆記】Dockers倉庫

倉庫是集中存放鏡像的地方,倉庫的概念不要與註冊服務器做混淆。註冊服務器是存放倉庫的具體服務器,每個服務器上可能有多個倉庫,一個倉庫有多個鏡像。

倉庫又可分為共有倉庫和私有倉庫,最大的共有倉庫即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)上的項目,若發現項目有新的提交則自動創建。關於配置自動創建步驟如下:

  1. 創建並登錄DockerHub以及目標網站。並在目標網站連接賬戶到DockerHub。

  2. 在DockerHub上配置一個自動創建。

  3. 選取一個目標網站上的項目和分支。當然該項目需要含Dockerfile。

  4. 指定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