倉庫(Repository)是集中存放鏡像的地方。
一個容易與之混淆的概念是注冊服務器(Registry)。
注冊服務器是存放倉庫的具體服務器,每個服務器上可以有多個倉庫,每個倉庫下面有多個鏡像。
倉庫可以被認為是一個具體的項目或目錄。
倉庫分為公共倉庫和私有倉庫,下面將分別介紹如何使用DockerHub官方倉庫進行登錄、下載等基本操作。
Docker Hub
目前 Docker 官方維護了一個公共倉庫 https://hub.docker.coom,其中已包括15000 多個的鏡像。大部分需求都可以通過在 Docker Hub 中下載鏡像來實現。
登錄
通過執行 docker login 命令來輸入用戶名、密碼和郵箱來完成注冊和登錄。注冊成功后,本地用戶目錄的.dockercfg 中將保存用戶的認證信息。
基本操作
用戶無需登錄即可通過 docker search 命令來查找官方倉庫中的鏡像,并利用docker pull 命令來將它下載到本地。
例如:以centos為關鍵詞進行搜索:
root@localhost:~# docker search centos
例如:下載官方的centos 鏡像到本地如下所示:
root@localhost:~# sudo docker pull centos
用戶也可以在登錄后通過 docker push 命令來將本地鏡像推送到 Docker Hub。
創建和使用私有倉庫
使用 registry 鏡像創建私有倉庫
自動下載并店一個 registry 容器,創建本地的私有倉庫服務。
root@localhost:~# sudo docker run -d -p 5000:5000 registry
默認情況下,會將倉庫創建在容器的 /tmp/registry 目錄下。通過 -v 參數將鏡像文件存放在本地指定的路徑上。
例如下南的例子將上傳的鏡像放到 /opt/data/registry 目錄:
root@localhost:~# sudo docker run -d -p 5001:5001 -v /opt/data/registry:/tmp/registry registry
此時,在本地將啟動一個私有倉庫服務,監聽端口為 5001。
管理私有倉庫鏡像
1.在本機搭建私有倉庫,并查看IP為:10.0.2.2
root@localhost:~# sudo docker run -d -p 5000:5000 registry
2.然后在虛擬機里查看系統已有鏡像:
root@localhost:~# sudo docker images
3.使用 docker tag 命令將這個鏡像標記為10.0.2.2:5000/test
root@localhost:~# sudo docker tag registry:latest
4.使用 docker push 上傳標記的鏡像:
root@localhost:~# sudo docker push 10.0.2.2:5000/test
5.用 curl 查看倉庫 10.0.2.2:5000 中的鏡像:
root@localhost:~# curl http://10.0.2.2:5000/v1/search
在結果中可以看到{“description": "", "name": "library/test"},表明鏡像已經成功上傳。
現在可以到任務一臺能訪問10.0.2.2 地址的機器去下載這個鏡像:
root@localhost:~# sudo docker pull 10.0.2.2:5000/test
小結
倉庫概念的引入,為 Docker 鏡像文件的分發和管理提供了便捷的途徑。
在企業的生產環境中,一般使用私有倉庫來維護內部鏡像。
參考文檔
《Docker 技術入門與實戰》第5章 倉庫