1. 程式人生 > >Docker Private Registry && 資源限制

Docker Private Registry && 資源限制

創建用戶 top 角色 第三方 log inux mas ... 圖片

  • 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 && 資源限制