docker倉庫分公有和私有之分,本文主要介紹如何搭建私有倉庫git
1. 簡介
Docker倉庫,相似於yum倉庫,是用來保存鏡像的倉庫。爲了方便的管理和使用docker鏡像,能夠將鏡像集中保存至Docker倉庫中,將製做好的鏡像push到倉庫集中保存,在須要鏡像時,從倉庫中pull鏡像便可。github
Docker 倉庫分爲公有云倉庫和私有云倉庫docker
公有云倉庫:由互聯網公司對外公開的倉庫json
官方vim
私有云倉庫:組織內部搭建的倉庫,通常只爲組織內部使用,常使用下面軟件搭建倉庫centos
docker registoryapi
docker harbor瀏覽器
2.1 從dockerhub推送/拉取鏡像
1.1 註冊dockerhub建立帳號 :https://hub.docker.com/安全
docker push addmoney2018/learndocker:tagname服務器
You can push a new image to this repository using the CLI
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
Make sure to change tagname with your desired image repository tag.
1.2 在本地經過commit容器保存或者dockerfile構建一個鏡像
1.3 本地登陸dockerHub :docker login,登陸後生成~/.docker/config.json文件保存驗證信息
1.4 檢查鏡像名是否符合dockerHub要求的,如不行,修正,再上傳鏡像
docker tag old-image:tagename addmoney2018/learndocker:20201212
docker push addmoney2018/learndocker:20201212
1.5 從dockerHub上拉取鏡像
docker login
docker pull addmoney2018/learndocker
2. 2 建立組織和團隊賦權共同管理倉庫
組織相似於名稱空間,每一個組織的名稱全網站惟一,一個組織能夠有多個用戶賬戶使用,而且能夠指定不一樣用戶對組織內的倉庫不一樣的權限
三種不一樣權限
Read-only:Pull and view repository details and builds
Read &Write:Pull, push, and view a repository; view, cancel, retry or trigger builds
2.2.1 建立組織
2.2.2 組織下建立團隊
2.2.3 爲團隊下的倉庫配置權限
2.2.4 本地將鏡像上傳到指定的組織
docker login # 先將鏡像名改爲:docker.io/組織名/鏡像名:標籤 docker tag local_images docker.io/beijingdream:v1 # 推送 docker push docker.io/beijingdream:v1 # 其餘機器拉取 docker pull docker.io/beijingdream:v1
注:還有一種是用阿里雲的倉庫,大致邏輯一致,請自行百度學習
3. 搭建本身的私有倉庫
* 私有云單機倉庫Docker Registry【官方提供】
Docker Registry做爲Docker的核心組件之一負責鏡像內容的存儲與分發,客戶端的docker pull以及push命令都將直接與registry進行交互,go開發後改項目名爲Distribution
官方文檔:https://docs.docker.com/registry/
源碼GitHub地址:https://github.com/docker/distribution
官方部署文檔:https://github.com/docker/docker.github.io/blob/master/registry/deploying.md
參考文檔:https://yeasy.gitbook.io/docker_practice/repository/registry
3.1 從dockerHub上拉取docker registry鏡像
docker pull registry:latest
3.2 啓動容器運行倉庫
docker run -d \ -p 5000:5000 \ --name my_registry --restart=always \ -v /opt/data/registry_dir:/var/lib/registry \ registry:latest # 私有倉庫容器裏默認建立在/var/lib/registry裏,經過映射就將全部的鏡像文件保存到宿主機對應的目錄裏進行持久化防止因容器掛了數據丟失
3.3 在使用端修改docker配置文件,配置倉庫地址
vim /etc/docker/daemon.json { "data-root" : "/app/lib/docker" , "registry-mirrors": ["192.168.0.100:5000"], # 加速的地址 "insecure-registries" : ["192.168.0.100:5000"] } # 保存配置,重啓docker systemctl restart docker # 從新啓動registry生成容器
3.4 將本地鏡像推送到私有倉庫
docker tag centos 192.168.0.100:5000/centos:v1 docker push 192.168.0.100:5000/centos:v1
3.5 查看倉庫狀況
官網文檔:https://docs.docker.com/registry/spec/api/#listing-repositories
# 只有api,沒有可視化界面 http://192.168.0.100:5000/v2/_catalog
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,由vmware開源,其經過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像所有保存在私有Registry中。
vmware官方開源服務:https://vmware.github.io/
harbor 官方github 地址:https://github.com/vmware/harbor
harbor 官方網址:https://goharbor.io/
harbor官方文檔:https://goharbor.io/docs/
Harbor功能官方介紹
-基於角色的訪問控制:用戶與Docker鏡像倉庫經過「項目」進行組織管理,一個用戶能夠對多個鏡像倉庫在同一命名空間(project)裏有不一樣的權限
-鏡像複製:鏡像可在多個Registry實例中複製(同步)。尤爲適合於負載均衡,高可用,混合雲和多雲的場景
-圖形化用戶界面:用戶能夠經過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間
-AD/LDAP 支:Harbor能夠集成企業內部已有的AD/LDAP,用於鑑權認證管理
-審計管理:全部針對鏡像倉庫的操做均可以被記錄追溯,用於審計管理
-國際化:已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來
-RESTful API:提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易
-部署簡單:提供在線和離線兩種安裝工具, 也能夠安裝到vSphere平臺(OVA方式)虛擬設備
具體的部署,可自行百度!