Docker Private Registry && 資源限制
Docker Private Registry
Docker Registry 分類
Registry用於保存docker鏡像,包括鏡像的層次結構和元數據
用戶可自建Registry,也可使用官方的Docker Hub
分類
Sponsor Registry:第三方的registry,供客戶和Docker社區使用
Mirror Registry:第三方的registry,只讓客戶使用
Vendor Registry:由發布Docker鏡像的供應商提供的registry
Private Registry:通過設有防火墻和額外的安全層的私有實體提供的registry
Registry(repository and index)
Repository
由某特定的docker鏡像的所有叠代版本組成的鏡像倉庫
一個 Registry中可以存在多個Repository
Repository可分為“頂層倉庫”和“用戶倉庫”
用戶倉庫名稱格式為“用戶名/倉庫名”
每個倉庫可以包含多個Tag(標簽) ,每個標簽對應一個鏡像
Index
維護用戶帳戶、鏡像的校驗以及公共命名空間的信息
相當於為Registry提供了一個完成用戶認證等功能的檢索接口
創建私有Registry
使用docker-distribution
Server: ~]#yum -y install docker-distribution ~]#systemctl start docker-distribution Client: ~]#vim /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com","https://4r35ny5z.mirror.aliy uncs.com"], "insecure-registries": ["centos37.liuyutang.top:5000"] } ~]#systemctl restart docker ~]#docker tag myweb:v0.3-11 centos37.liuyutang.top:5000/myweb:v0.3-11 ~]#docker push centos37.liuyutang.top:5000/myweb:v0.3-11
Harbor
Harbor簡介
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,通過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。作為一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提升用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源復制,鏡像全部保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。
特性
基於角色的訪問控制 - 用戶與Docker鏡像倉庫通過“項目”進行組織管理,一個用戶可以對多個鏡像倉庫在同一命名空間(project)裏有不同的權限。
鏡像復制 - 鏡像可以在多個Registry實例中復制(同步)。尤其適合於負載均衡,高可用,混合雲和多雲的場景。
圖形化用戶界面 - 用戶可以通過瀏覽器來瀏覽,檢索當前Docker鏡像倉庫,管理項目和命名空間。
AD/LDAP 支持 - Harbor可以集成企業內部已有的AD/LDAP,用於鑒權認證管理。
審計管理 - 所有針對鏡像倉庫的操作都可以被記錄追溯,用於審計管理。
國際化 - 已擁有英文、中文、德文、日文和俄文的本地化版本。更多的語言將會添加進來。
RESTful API - RESTful API 提供給管理員對於Harbor更多的操控, 使得與其它管理軟件集成變得更容易。
部署簡單 - 提供在線和離線兩種安裝工具, 也可以安裝到vSphere平臺(OVA方式)虛擬設備。
安裝配置向導
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
參考手冊
https://vmware.github.io/harbor/cn/
安裝部署
vmware harbor得借助於docker的單機編排工具:docker-compose
使用示例
vmware harbor安裝方式
在線安裝
離線安裝
OVA安裝
參考手冊:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
Harbor安裝部署
~]#wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.2.tgz ~]#tar xf harbor-offline-installer-v1.4.0.tgz -C /usr/local/ ~]#yum -y install epel-release ~]#cd /usr/local/harbor/ harbor]#vim harbor.cfg hostname = centos17.liuyutang.top harbor_admin_password = Harbor12345 db_host = mysql db_password = root123 harbor]#yum -y install docker-compose harbor]#./install.sh
輸入用戶名和密碼登錄即可
部署倉庫
1、創建用戶
2、創建倉庫
3、使用剛才創建的用戶登錄,創建項目
~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-1 ~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-2 ~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-3 ~]#vim /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com","https://4r35ny5z.mirror.aliy uncs.com"], "insecure-registries": ["centos17.liuyutang.top"] 使用http協議,默認使用https } ~]#docker login centos17.liuyutang.top ~]#docker push centos17.liuyutang.top/devel/myweb
可查看推上來的鏡像
使用docker-compose命令可管理harbor服務
~]#docker-compose stop ~]#docker-compose start Define and run multi-container applications with Docker. Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--help
Docker資源限制
默認情況,在Docker容器中沒有任何資源限制
可以從名稱空間(namespace)和控制組(cgroups)兩個維度來定義
Memory
OOME:如果Linux內核探測到當前宿主機已經沒有足夠內存可用,用於實現執行某些重要的系統功能,它會拋出一個異常,並且開始啟動去killing某些進程來釋放內存
一旦發生OOME,任何進程都有可能被殺死,包括docker daemon在內
為此,Docker特地調整了docker daemon的OOME優先級,以免它被內核“正法”,但容器的優先級未被調
限制內存資源
--memory-swap
CPU
默認設置每個容器可以使用宿主機的所有CPU資源
進程分類
CPU密集型:調低優先級
IO密集型
配置默認CFS調度
使用示例:使用stree鏡像做壓測
內存做限制: ~]#docker pull lorel/docker-stress-ng ~]#docker run --name stress --rm -it -m 256m lorel/docker-stress-ng:latest --vm 2 ~]#docker top stress ~]#docker stats stress CPU做限制: ~]#docker run --name stress -it --rm --cpus 2 lorel/docker-stress-ng:latest --cpu 8 ~]#docker stats stress ~]#docker kill stress ~]#docker run --name stress -it --cpuset-cpus 0,1 --rm lorel/docker-stress-ng:latest --cpu 8 ~]#docker stats stress ~]#docker run --name stress -it --cpu-shares 1024 --rm lorel/docker-stress-ng:latest --cpu 8 ~]#docker run --name stress1 -it --cpu-shares 512 --rm lorel/docker-stress-ng:latest --cpu 8
Docker Private Registry && 資源限制