日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 一、私有倉庫建立
  • 二、Cgroup 資源配置方法
  •  三、CPU使用率控制
    •  使用 stress 工具測試 CPU 和內存
  • 四、 CPU 周期限制
    • 五、 CPU Core 控制
      • 六、 CPU 配額控制參數的混合使用
        • 七、 內存限額
          • 八、Block IO 的限制
            • 九、 bps 和 iops 的限制
              • 十、 構建鏡像(docker build)時指定資源限制
                • 十一、 compose部署
                  • 十二、 consul部署
                    • 總結

                      一、私有倉庫建立

                      docker pull registry

                      在docker 引擎終端設置

                      vim /etc/docker/daemon.json
                      {
                      "insecure-registries": ["ip網址:5000"],   添加
                      "registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"]
                      }
                       
                      systemctl restart docker.service
                       
                      docker create -it registry /bin/bash
                       
                      docker ps -a

                      會是異常狀態

                      docker start 

                      宿主機的/data/registry自動創建掛載容器中的/tmp/registry

                      docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

                      更改標記為ip網址:5000/nginx

                      docker tag nginx:latest ip網址:5000/nginx

                      上傳

                      docker push ip網址:5000/nginx
                       
                      The push refers to repository [ip網址:5000/nginx]

                      獲取私有倉庫列表

                      獲取registry的鏡像倉庫中的鏡像信息

                      curl -XGET http://ip網址:5000/v2/_catalog

                      測試私有倉庫下載

                      docker pull ip網址:5000/nginx

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      二、Cgroup 資源配置方法

                      docker 使用cgroup控制資源

                       respones
                          request

                              Docker通過 Cgroup 來控制容器使用的資源配額,包括 CPU、內存、磁盤三大方面, 基本覆蓋了常見的資源配額和使用量控制。

                              Cgroup 是 Control Groups 的縮寫,是Linux 內核提供的一種可以限制、記錄、隔離進程組所使用的物理資源(如 CPU、內存、磁盤 IO 等等)的機制

                             07年谷歌,可以控制資源分配通過操作系統內核,控制應用程序使用內存資源、cpu資源、 文件系統資源等等
                      cgroup是一種資源控制手段
                      也是容器隔離的6個名稱空間的一種實現手段

                      每個容器相當于一個進程

                       三、CPU使用率控制

                      cpu周期: 1s為一個周期的定律,參數值一般為100000 (CPU衡量單位是秒)。

                             假如需要給此容器分配cpu使用率的20%,則參數需要設置為20000,相當于每個周期分配給這個容器0.2s。

                      cpu在一個時刻,只能給一個進程占用。

                       使用 stress 工具測試 CPU 和內存

                      使用 Dockerfile 來創建一個基于 Centos 的 stress 工具鏡像。

                      mkdir /opt/stress
                       
                      vim /opt/stress/Dockerfile
                       
                      FROM centos:7
                      RUN yum install -y wget
                      RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
                      RUN yum install -y stress
                       
                      cd /opt/stress/
                       
                      docker build -t centos:stress .

                             使用如下命令創建容器,命令中的–cpu-shares 參數值不能保證可以獲得 1 個 vcpu 或 者多少 GHz 的 CPU 資源,它僅是一個彈性的加權值。

                      docker run -itd --cpu-shares 100 centos:stress

                              默認情況下,每個 Docker容器的CPU份額都是1024。單獨一個容器的份額是沒有意義的。只有在同時運行多個容器時,容器的 CPU 加權的效果才能體現出來。
                             兩個容器 A、B 的 CPU 份額分別為 1000 和 500,在CPU進行時間片分配的時候,容器A比容器B多一倍的機會獲得 CPU 的時間片。
                             但分配的結果取決于當時主機和其他容器的運行狀態, 實際上也無法保證容器 A一定能獲得CPU時間片。比如容器A的進程一直是空閑的,那么容器B是可以獲取比容器A更多的CPU時間片的。極端情況下,例如主機上只運行了一個容器,即使它的 CPU 份額只有 50,它也可以獨占整個主機的CPU資源。

                      一個主機運行一個容器,只運行了一個應用(容器也是虛擬化技術  )
                      一個主機運行一個應用

                              Cgroups 只在容器分配的資源緊缺時,即在需要對容器使用的資源進行限制時,才會生效。因此,無法單純根據某個容器的CPU份額來確定有多少CPU資源分配給它,
                              資源分配 結果取決于同時運行的其他容器的CPU分配和容器中進程運行情況。
                              可以通過 cpu share 可以設置容器使用 CPU 的優先級/權重,比如啟動了兩個容器及運行查看 CPU 使用百分比。

                      docker run -tid --name cpu512 --cpu-shares 512 centos:stress stress -c 10   
                      容器產生10個子函數進程
                       
                      docker exec -it f4953c0d7e76 bash  
                      進入容器使用top查看cpu使用情況
                       
                      再開啟一個容器做比較
                      docker run -tid --name cpu1024 --cpu-shares 1024 centos:stress stress -c 10
                       
                      docker exec -it 5590c57d27b0 bash  //進容器使用top對比兩個容器的%CPU,比例是1:2
                       
                      docker stats 查看資源使用

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      四、 CPU 周期限制

                      Docker 提供了–cpu-period、–cpu-quota 兩個參數控制容器可以分配到的 CPU 時鐘周期。
                      –cpu-period 是用來指定容器對 CPU 的使用要在多長時間內做一次重新分配。

                      cd /sys/fs/cgroup/cpu/docker容器ID/cpu.cfs_quota_us

                      宿主機怎么提供資源、怎么控制docker容器中的應用的: 
                              CPU→VCPU→以進程的方式體現在workstation環境(docker環境中)→docker表現形式是容器→Vcpu以進程的方式控制容器→容器中的應用需要的是服務進程支持→宿主機內核中cpu可以被cgroup管理(通過分配資源手段)→linux 內核中的cgroup可以控制管理docker 容器中的應用。

                      –cpu-quota 是用來指定在這個周期內,最多可以有多少時間用來跑這個容器。
                      與 –cpu-shares 不同的是,這種配置是指定一個絕對值,容器對 CPU 資源的使用絕對不會超過配置的值。

                             cpu-period 和 cpu-quota 的單位為微秒(μs)。cpu-period 的最小值為 1000 微秒, 最大值為 1 秒(10^6 μs),默認值為 0.1 秒(100000 μs)。
                            cpu-quota 的值默認為 -1, 表示不做控制。cpu-period 和 cpu-quota 參數一般聯合使用。redis 中,用來表示的永久 -1

                      ttl teacher 
                      -1
                      lrange teacher 0 -1 

                               容器進程需要每 1 秒使用單個 CPU 的 0.2 秒時間,可以將 cpu-period 設置 為 100000(即 1 秒),cpu-quota 設置為 20000(0.2 秒)。
                               當然,在多核情況下,如果允許容器進程完全占用兩個 CPU,則可以將 cpu-period 設置為 10000(即 0.1 秒), cpu-quota 設置為 200000(0.2 秒)。

                      選項 描述
                      –pus= 指定容器可以使用多少可用CPU資源。例如,如果主機有兩個CPU,并且您設置了而Cpus ="1.5", 那么該容器將保證最多可以訪問一個半的CPU。這相當于設置-cpu-period ="100000"和–cpu- quota ="150000"。在Docker 1.13和更高版本中可用。
                      –Cpu-period= 指定CPU CFS調度程序周期,該周期與–pu-quota-起使用。默認為100000微妙,以微秒表示。 大多數用戶不會從默認值更改此設置。如果您使用Docker 1.13或更高版本,請改用–cpus。
                      –Cpu-quota= 在容器上添加CPU CFS配額。每個–cpu-period允許CPU訪問的容器數微秒數。換句話說,cpu- quota/ cpu-period。如果您使用Docker 1.13或更高版本,請改用-cpuS。
                      –cpuset-cpus 限制容器可以使用的特定CPU或核心。如果您有多個CPU,則容器可以使用的逗號分隔列表或連字 符分隔的CPU范圍。第一個CPU編號為0.有效值可能為0-3 (使用第一,第二,第三和第四個 CPU)或1,3 (使用第二個和第四個CPU)。
                      –Cpu-shares 將此標志設置為大于或小于默認值1024的值,以增加或減少容器的重量,并使其能夠訪問主機 CPU周期的更大或更小比例。這僅在CPU周期受到限制時才會執行。當大量CPU周期可用時,所有 容器都使用盡可能多的CPU。這樣,這是一個軟限制。 –cpu-shares不會阻 止容器在群集模式下進 行調度。它優先考慮容器CPU資源的可用CPU周期。它不保證或保留任何特定的CPU訪問權限。
                      docker run -tid --cpu-period 100000 --cpu-quota 200000 centos:stress
                       
                      docker exec -it 98d2aaa50019 bash

                      查詢容器的資源限制參數

                      (1)在指定容器目錄中

                      cat /sys/fs/cgroup/cpu/docker/容器ID/cpu.cfs_period_us
                       
                      cat /sys/fs/cgroup/cpu/docker/容器ID/cpu.cfs_quota_us

                      (2)使用docker inspect 容器ID/容器名

                      "CpuPeriod": 
                       "CpuQuota": 

                       

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      五、 CPU Core 控制

                             對多核 CPU 的服務器,Docker 還可以控制容器運行使用哪些 CPU 內核,即使用–cpuset-cpus 參數。
                             這對具有多 CPU 的服務器尤其有用,可以對需要高性能計算的容器進行性能最優的配置。

                      docker run -tid --name cpu1 --cpuset-cpus 0-1 centos:stress

                      執行以上命令需要宿主機為雙核,表示創建的容器只能用 0、1兩個內核。最終生成 的 cgroup 的 CPU 內核配置

                      cat /sys/fs/cgroup/cpuset/docker/

                      通過下面指令可以看到容器中進程與 CPU 內核的綁定關系,達到綁定 CPU 內核的目的。

                      docker exec   taskset -c -p 1    
                      容器內部第一個進程號pid為1被綁定到指定CPU上運行pid 1's current affinity list: 0,1

                      創建容器時 直接使用參數指定資源限制

                      創建容器后,指定資源分配
                      修改宿主機對應容器資源控制的文件
                      /sys/fs/cgroup/*

                      六、 CPU 配額控制參數的混合使用

                              通過 cpuset-cpus 參數指定容器 A 使用 CPU 內核 0,容器 B 只是用 CPU 內核 1。
                      在主機上只有這兩個容器使用對應 CPU 內核的情況,它們各自占用全部的內核資源,cpu-shares 沒有明顯效果。

                             cpuset-cpus、cpuset-mems 參數只在多核、多內存節點上的服務器上有效,并且必須與實際的物理配置匹配,否則也無法達到資源控制的目的。

                             在系統具有多個 CPU 內核的情況下,需要通過 cpuset-cpus 參數為設置容器 CPU 內核才能方便地進行測試。
                            宿主系統修改為4核心CPU

                      docker run -tid --name cpu3 --cpuset-cpus 1 --cpu-shares 512 centos:stress stress -c 1
                      docker exec -it 84598dfadd34 bash
                      exit
                      top   
                      按1查看每個核心的占用
                      docker run -tid --name cpu4 --cpuset-cpus 3 --cpu-shares 1024 centos:stress stress -c 1
                      docker exec -it  bash

                              上面的 centos:stress 鏡像安裝了 stress 工具,用來測試 CPU 和內存的負載。通過 在兩個容器上分別執行 stress -c 1 命令,將會給系統一個隨機負載,產生 1 個進程。這個進程都反復不停的計算由 rand產生隨機數的平方根,直到資源耗盡。 
                             觀察到宿主機上的 CPU 使用率,第三個內核的使用率接近 100%, 并且一批進程的 CPU 使用率明顯存在 2:1 的使用比例的對比。

                      七、 內存限額

                      與操作系統類似,容器可使用的內存包括兩部分:物理內存和 Swap。 
                      Docker 通過下面兩組參數來控制容器內存的使用量。

                      -m 或 –memory:設置內存的使用限額,例如 100M、1024M。 
                      –memory-swap:設置 內存+swap 的使用限額。 
                      執行如下命令允許該容器最多使用 200M 的內存和 300M 的 swap。
                      #單純做swap 和物理內存的硬限制

                      docker run -it -m 200M --memory-swap=300M centos:stress

                      –vm 1:啟動 1 個內存工作線程。 
                      –vm-bytes 280M:每個線程分配 280M 內存。 
                      默認情況下,容器可以使用主機上的所有空閑內存。
                      與 CPU 的 cgroups 配置類似, Docker 會自動為容器在目錄 /sys/fs/cgroup/memory/docker/<容器的完整長 ID>
                      中創建相應 cgroup 配置文件

                              如果讓工作線程分配的內存超過 300M,分配的內存超過限額,stress 線程報錯,容器 退出。

                      docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 310M
                      

                      八、Block IO 的限制

                              默認情況下,所有容器能平等地讀寫磁盤,可以通過設置–blkio-weight 參數來改變 容器 block IO 的優先級。 
                      –blkio-weight 與 –cpu-shares 類似,設置的是相對權重值,默認為 500。
                      在下面 的例子中,容器 A 讀寫磁盤的帶寬是容器 B 的兩倍。

                      docker run -it --name container_A --blkio-weight 600 centos:stress
                      cat /sys/fs/cgroup/blkio/blkio.weight
                      docker run -it --name container_B --blkio-weight 300 centos:stress
                      cat /sys/fs/cgroup/blkio/blkio.weight

                      九、 bps 和 iops 的限制

                      bps 是 byte per second,每秒讀寫的數據量。 
                      iops 是 io per second,每秒 IO 的次數。 
                      可通過以下參數控制容器的 bps 和 iops:

                      –device-read-bps,限制讀某個設備的 bps。
                      –device-write-bps,限制寫某個設備的 bps。
                      –device-read-iops,限制讀某個設備的 iops。
                      –device-write-iops,限制寫某個設備的 iops。

                      限制容器寫 /dev/sda 的速率為 5 MB/s。

                      docker run -it --device-write-bps /dev/sda:5MB centos:stress
                       
                      dd if=/dev/zero of=test bs=1M count=1024 oflag=direct   
                      可以按ctrl+c中斷查看

                              通過 dd 命令測試在容器中寫磁盤的速度。因為容器的文件系統是在 host /dev/sda上的,在容器中寫文件相當于對 host /dev/sda 進行寫操作。另外,oflag=direct 指定用 direct IO 方式寫文件,這樣 –device-write-bps 才能生效。

                      結果表明限速 5MB/s 左右。作為對比測試,如果不限速,結果如下。

                      docker run -it centos:stress
                       
                      dd if=/dev/zero of=test bs=1M count=1024 oflag=direct

                      十、 構建鏡像(docker build)時指定資源限制

                      build-arg=[] 設置鏡像創建時的變量
                      cpu-shares 設置 cpu 使用權重
                      cpu-period 限制 CPU CFS周期
                      cpu-quota 限制 CPU CFS配額
                      cpuset-cpus 指定使用的CPU id
                      cpuset-mems 指定使用的內存 id
                      disable-content-trust 忽略校驗,默認開啟
                      -f 指定要使用的Dockerfile路徑
                      force-rm 設置鏡像過程中刪除中間容器
                      isolation 使用容器隔離技術
                      label=[] 設置鏡像使用的元數據
                      -m  設置內存最大值
                      memory-swap 設置Swap的最大值為內存+swap,"-1"表示不限swap
                      no-cache 創建鏡像的過程不使用緩存
                      pull  嘗試去更新鏡像的新版本
                      quiet, -q 安靜模式,成功后只輸出鏡像 ID
                      rm 設置鏡像成功后刪除中間容器
                      shm-size 設置/dev/shm的大小,默認值是64M
                      ulimit Ulimit配置
                      squash 將 Dockerfile 中所有的操作壓縮為一層
                      tag, -t 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。
                      network 默認 default。在構建期間設置RUN指令的網絡模式

                      1.資源限制的主要類型

                      1)CPU 權重shares、quota、cpuset
                      2)磁盤 BPS、TPS限制,指定使用哪個磁盤、磁盤分區
                      3)內存 -m -swap 內存、交換分區
                      大部分做的是上限的限制

                      2.資源限制的幾種方式

                      1)build 構建鏡像時,可以指定該鏡像的資源限制
                      2)run 將鏡像跑為容器的時候,可以指定容器的資源限制

                      3)容器啟動之后, 可以在宿主機對應容器的目錄下。修改資源限制,然后重載
                      /sys/fs/cgroup/*(cpu、blk、mem)/docker/容器ID/→修改對應的資源限制文件參數就可以

                       

                      3.資源限制的狀態查詢

                      1)docker inspect 鏡像ID/容器ID 
                      2)直接查看宿主機對應容器ID資源限制的文件
                      3)docker stats

                      cgroup 資源 docker 原理之一 ,namespaces 6個名稱空間

                      十一、 compose部署

                      Docker Compose配置常用字段

                      字段

                      描述

                      build dockerfile context

                      指定Dockerfile文件名構建鏡像上下文路徑

                      image

                      指定鏡像

                      command

                      執行命令,覆蓋默認命令

                      container name

                      指定容器名稱,由于容器名稱是唯一的如果指定自定

                      義名稱,則無法scale

                      deploy

                      指定部署和運行服務相關配置,只能在Swarm模式使用

                      environment

                      添加環境變量

                      networks

                      加入網絡

                      ports

                      暴露容器端口,與-p相同,但端口不能低于60

                      volumes

                      掛載宿主機路徑或命令卷

                      restart

                      重啟策略,默認no,always,no-failure,unless-stoped

                      hostname

                      容器主機名

                      Docker Compose常用命令

                      字段

                      描述

                      build

                      重新構建服務

                      ps

                      列出容器

                      up

                      創建和啟動容器

                      exec

                      在容器里面執行命令

                      scale

                      指定一個服務容器啟動數量

                      top

                      顯示容器進程

                      logs

                      查看容器輸出

                      down

                      刪除容器、網絡、數據卷和鏡像

                      stop/start/restart

                      停止/啟動/重啟服務

                      環境部署所有主機安裝docker環境(內容為docker基礎)

                      yum install docker-ce -y

                      下載compose

                      curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
                       
                      cp -p docker-compose /usr/local/bin/
                       
                      chmod +x /usr/local/bin/docker-compose
                       
                      mkdir /root/compose_nginx
                       
                      tree ./
                      ./
                      ├── docker-compose.yml        創建模板腳本
                      ├── nginx
                         ├── Dockerfile             創建容器腳本
                         ├── nginx-1.15.9.tar.gz    復制源碼包
                      └── wwwroot
                          └── index.html            站點
                      vim /root/compose_nginx/docker-compose.yml
                       
                      version: '3'
                      services:
                        nginx:
                          hostname: nginx
                          build:
                            context: ./nginx
                            dockerfile: Dockerfile
                          ports:
                            - 1216:80
                            - 1217:443
                          networks:
                            - cluster
                          volumes:
                            - ./wwwroot:/usr/local/nginx/html
                      networks:
                        cluster:
                      docker-compose -f docker-compose.yml up -d

                      docker 基礎操作/常規操作
                      1)image 容器的管理命令
                      2)dockerfile 
                      3)docker 網絡 
                      4)docker 私有倉庫
                      registry 
                      harbor 

                      docker-compose→資源編排和管理手段 (docker swarm)

                       

                      Harbor 服務

                              Harbor被部署為多個Docker 容器,因此可以部署在任何支持Docker 的Linux 發行版

                      上。(registry 為其核心組件)

                             Harbor比registry相比好處是: harbor 支持多種功能、圖形化界面管理、多用戶權限、角色管理機制、安全機制。

                            服務端主機需要安裝Python、 Docker 和Docker Compose。(web 環境支持的是PY語言,故需要安裝Python)。

                      1.下載Harbor 安裝程序

                      wget http:// harbor.orientsoft.cn/habor-1.2.2/harborofline-installer-v1.2.2.tgz

                      tar zxvf harbor oflie-installer-v1.2.2.tgz -C /usr/local/

                      2.配置Harbor 參數文件

                      vim /us/local/harbor/harbor.cfg
                       
                      第五行  hostname = 主機ip

                      關于Harbor.cfg 配置文件中有兩類參數:所需參數和可選參數

                      (1)參數

                      所需參數這些參數需要在配置文件Harbor.cfg 中設置。

                      如果用戶更新它們并運行install.sh 腳本重新安裝Harbor,參數將生效。

                      具體參數

                      ①hostname:用于訪問用戶界面和reeister 服務。它應該是目標機器的IP 地址或完全限定

                      的域名(FQDN)。

                      ②ui url _protocol: (http 或https, 默認為http) 用于訪問UI和令牌/通知服務的協議。如

                      果公證處于啟用狀態,則此參數必須為https。(身份驗證時會向Mysql數據庫進行比對,

                      然后授予令牌)

                      ③max_ job_workers: 鏡像復制作業線程。

                      ④db_ password: 用于db_ auth的MySQL數據庫root用戶的密碼。

                      ⑤customize_ crt:該屬性可設置為打開或關閉,默認打開。打開此屬性時,準備腳本創建私鑰和根證書,用于生成/驗證注冊表令牌。

                      當由外部來源提供密鑰和根證書時,將此屬性設置為off。

                      ⑥ssl_cert: SSL 證書的路徑,僅當協議設置為https 時才應用。

                      ⑦ssl cert_key: SSL 密鑰的路徑,僅當協議設置為https 時才應用。

                      ⑧secretkey_ path:用于在復制策略中加密或解密遠程register 密碼的密鑰路徑。

                      (2)可選參數

                              這些參數對于更新是可選的,即用戶可以將其保留為默認值,并在啟動Harbor 后在Web UI上進行更新。

                            如果進入Harbor.cfg, 只會在第一次啟動 Harbor時生效,隨后對這些參數的更新,Harbor.cfg將被忽略。

                      注意:如果選擇通過UI設置這些參數,請確保在啟動Harbour后立即執行此操作。具體來

                      說,必須在注冊或在Harbor 中創建任何新用戶之前設置所需的auth_mode。當系統中有用戶時(除了默認的admin 用戶),auth_mode 不能被修改。具體參數如下:

                      ①Email: Harbor 需要該參數才能向用戶發送“密碼重置”電子郵件,并且只有在需要該功能

                      時才需要。

                      請注意,在默認情況下SSL連接時沒有啟用。如果SMTP服務器需要SSL,但不支持STARTTLS,那么應該通過設置啟用SSLemailssl=TRUE。

                      ②harbour_admin_password: 管理員的初始密碼,只在Harbour第-次啟動時生效。之后,此

                      設置將被忽略,并且應UI中設置管理員的密碼。

                      請注意,默認的用戶名/密碼是admin/Harbor12345 。

                      ③auth mode:使用的認證類型,默認情況下,它是db_auth, 即憑據存儲在數據庫中。對于

                      LDAP身份驗證(以文件形式驗證),請將其設置為ldap_auth。

                      ④self_registration: 啟用/禁用用戶注冊功能。禁用時,新用戶只能由Admin 用戶創建,只有

                      管理員用戶可以在Harbour中創建新用戶。

                      注意:當auth_mode設置為ldap_auth時,自注冊功能將始終處于禁用狀態,并且該標志

                      被忽略。

                      ⑤Token_ expiration: 由令牌服務創建的令牌的到期時間(分鐘),默認為30分鐘。

                      project_creation. restriction: 用于控制哪些用戶有權創建項目的標志。默認情況下,每個人

                      都可以創建一個項目。

                      如果將其值設置為“adminonly",那么只有admin可以創建項目。

                      ⑥verify_remote_cert: 打開或關閉,默認打開。此標志決定了當Harbor與遠程register 實例通信時是否驗證SSL/TLS 證書。

                              將此屬性設置為off 將繞過SSL/TLS 驗證,這在遠程實例具有自簽名或不可信證書時經常使用。

                              另外,默認情況下,Harbor 將鏡像存儲在本地文件系統上。在生產環境中,可以考慮使用其他存儲后端而不是本地文件系統,如S3、Openstack Swif、Ceph 等。但需要更新common/templates/egistry/config.yml 文件。

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      3.啟動Harbor

                      sh /usr/local/harbor/install.sh

                      docker資源限制和compose部署詳解

                       打開瀏覽器輸入主機ip即可訪問harbor

                      4.查看Harbor啟動鏡像

                      查看鏡像

                      docker images

                      查看容器

                      docker ps -a
                       
                      cd /usr/local/harbor/
                       
                      docker-compose ps

                      此時可使用Docker 命令在本地通過127.0.0.1 來登錄和推送鏡像。默認情況下,

                      Register服務器在端口80. 上偵聽。

                      登錄

                      docker login -u admin -P Harbor12345 http://127.0.0.1

                      下載鏡像進行測試

                      docker pull cirros

                      鏡像打標簽

                      docker tag cirros 127.0.0.1/myproject-kgcirros:v1

                      上傳鏡像到Harbor

                      docker push 127.0.0.1/myproject-kgc/cirros:v1

                              以上操作都是在Harbor 服務器本地操作。如果其他客戶端上傳鏡像到Harbor, 就會報

                      如下錯誤。出現這問題的原因Docker Registry 交互默認使用的是HTTPS,但是搭建私有鏡

                      像默認使用的是HTTP 服務,所以與私有鏡像交互時出現以下錯誤。

                      docker login -u admin -P Harbor12345 http://主機ip
                       
                      會報錯

                      解決

                      vim /us/ib/systemd/system/docker.service
                       
                      ExecStart=/us/bin/dockerd -H fd:// -insecure-registry 主機ip
                       
                      --containerd=/run/containerd/containerd.sock
                      systemctl daemon-reload
                       
                      systemctl restart docker
                       
                      docker login -u admin -p Harbor12345 http://主機ip

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      十二、 consul部署

                      consul 注冊中心/注冊機

                      服務器nginx: Nginx 、Consul、 Consul-template
                      服務器docker: Docker-ce、registrator(自動發現、注冊的組件)

                      template 模板(更新)
                      registrator(自動發現)
                              后端每構建出一個容器,會向registrator進行注冊,控制consul 完成更新操作,consul會觸發consul template模板進行熱更新。
                              核心機制:consul :自動發現、自動更新,為容器提供服務(添加、刪除、生命周期輔助功能)。
                       

                      1.consul服務器

                      mkdir /root/consul
                       
                      cp consul_0.9.2_linux_amd64.zip /root/consul
                       
                      cd /root/consul
                       
                      unzip consul_0.9.2_linux_amd64.zip
                       
                      mv consul /usr/bin
                       
                       
                      consul agent \
                      -server \		                  server模式
                      -bootstrap \	                  前端框架(node.js)
                      -ui \		                      可被訪問的web界面
                      -data-dir=/var/lib/consul-data \
                      -bind= \
                      -client=0.0.0.0 \
                      -node=consul-server01 &> /var/log/consul.log &
                       
                      consul agent \
                      -server \
                      -bootstrap \
                      -ui \
                      -data-dir=/var/lib/consul-data \
                      -bind= \
                      -client=0.0.0.0 \
                      -node=consul-server01 &> /var/log/consul.log &

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      2.通過httpd api 獲取集群信息

                      curl 127.0.0.1:8500/v1/status/peers        看集群server成員
                      curl 127.0.0.1:8500/v1/status/leader       集群 Raf leader
                      curl 127.0.0.1:8500/v1/catalog/services    注冊的所有服務
                      curl 127.0.0.1:8500/v1/catalog/nginx       查看 nginx 服務信息
                      curl 127.0.0.1:8500/v1/catalog/nodes       集群節點詳細信息

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      3.容器服務自動加入consul集群

                      (1)安裝 Gliderlabs/Registrator 

                      可檢查容器運行狀態自動注冊,還可注銷 docker 容器的服務 到服務配置中心。
                      目前支持 Consul、Etcd 和 SkyDNS2。 
                      執行操作:

                      docker run -d \
                      --name=registrator \
                      --net=host \
                      -v /var/run/docker.sock:/tmp/docker.sock \
                      --restart=always \
                      gliderlabs/registrator:latest \
                      -ip=ip網址 \
                      consul://ip網址:8500

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      (2)測試服務發現功能是否正常

                      docker run -itd -p:83:80 --name test-01 -h test01 nginx
                      docker run -itd -p:84:80 --name test-02 -h test02 nginx
                      docker run -itd -p:88:80 --name test-03 -h test03 httpd
                      docker run -itd -p:89:80 --name test-04 -h test04 httpd

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      (3)驗證 http 和 nginx 服務是否注冊到 consul 

                              瀏覽器輸入 http://ip網址:8500,“單擊 NODES”,然后單擊 “consurl-server01”,會出現 5 個服務.

                      在consul服務器上查看服務

                      curl 127.0.0.1:8500/v1/catalog/services

                      (4)安裝 consul-template

                              Consul-Template 是一個守護進程,用于實時查詢 Consul 集群信息,并更新文件系統 上任意數量的指定模板,生成配置文件。更新完成以后,可以選擇運行 shell 命令執行更新 操作,重新加載 Nginx。Consul-Template ,可以查詢 Consul 中的服務目錄、Key、Key-values 等。
                             這種強大的抽象功能和查詢語言模板可以使 Consul-Template 特別適合動態的創建配置文件。
                             創建 Apache/Nginx Proxy Balancers、Haproxy Backends

                      (5)準備 template nginx 模板文件

                      在consul上操作

                      vim /root/consul/nginx.ctmpl
                       
                      upstream http_backend {
                        {{range service "nginx"}}
                         server {{.Address}}:{{.Port}};    此處引用的變量會指向后端的地址和端口(動態變化)
                         {{end}}
                      }
                       
                      server {
                        listen 85;
                        server_name localhost ip網址;         反向代理的IP地址(前端展示的NG服務的IP)
                        access_log /var/log/nginx/kgc.cn-access.log;
                        index index.html index.php;
                        location / {
                          proxy_set_header HOST $host;
                          proxy_set_header X-Real-IP $remote_addr;         后端真實IP
                          proxy_set_header Client-IP $remote_addr;    
                          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     轉發地址
                          proxy_pass http://http_backend;
                        }
                      }

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      (6)編譯安裝nginx

                      yum install gcc pcre-devel zlib-devel -y
                       
                      tar zxvf nginx-1.12.0.tar.gz  -C /opt
                       
                      ./configure --prefix=/usr/local/nginx
                       
                      make && make install
                       
                      ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

                      (7)配置 nginx

                      vim /usr/local/nginx/conf/nginx.conf
                       
                       
                      http {
                           include       mime.types;        默認存在的
                           include  vhost/*.conf;           添加虛擬主機目錄(consul動態生成的配置文件就會放在這里)
                           default_type  application/octet-stream;

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                        創建虛擬主機目錄

                      mkdir /usr/local/nginx/conf/vhost

                      docker資源限制和compose部署詳解

                      創建日志文件目錄

                      mkdir /var/log/nginx

                      docker資源限制和compose部署詳解

                      啟動nginx

                      usr/local/nginx/sbin/nginx

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      (8)配置并啟動 template

                      cp consul-template_0.19.3_linux_amd64.zip /root/
                       
                      unzip consul-template_0.19.3_linux_amd64.zip
                       
                      mv consul-template /usr/bin/

                      關聯nginx 虛擬目錄中的子配置文件操作

                      consul-template -consul-addr 192.168.226.130:8500 \
                      -template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/benet.conf:/usr/local/nginx/sbin/nginx -s reload" \
                      --log-level=info

                      docker資源限制和compose部署詳解

                      另外打開一個終端查看生成配置文件

                      cat /usr/local/nginx/conf/vhost/kgc.conf 
                      upstream http_backend {
                        
                         server ip網址:83;
                         
                         server iP網址:84;
                         
                      }
                       
                      server {
                        listen 83;
                        server_name localhost ip網址;
                        access_log /var/log/nginx/kgc.cn-access.log;
                        index index.html index.php;
                        location / {
                          proxy_set_header HOST $host;
                          proxy_set_header X-Real-IP $remote_addr;
                          proxy_set_header Client-IP $remote_addr;
                          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                          proxy_pass http://http_backend;
                        }
                      }

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      4.增加一個nginx容器節點

                      增加一個 nginx 容器節點,測試服務發現及配置更新功能
                      在registrator服務端注冊

                      docker run -itd -p 85:80 --name test-05 -h test05 nginx

                      查看三臺nginx容器日志,請求正常輪詢到各個容器節點上

                      docker logs -f test-01
                      docker logs -f test-02
                      docker logs -f test-05

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      docker資源限制和compose部署詳解

                      總結

                      分享到:
                      標簽:Docker 服務器 詳解 資源 部署
                      用戶無頭像

                      網友整理

                      注冊時間:

                      網站:5 個   小程序:0 個  文章:12 篇

                      • 51998

                        網站

                      • 12

                        小程序

                      • 1030137

                        文章

                      • 747

                        會員

                      趕快注冊賬號,推廣您的網站吧!
                      最新入駐小程序

                      數獨大挑戰2018-06-03

                      數獨一種數學游戲,玩家需要根據9

                      答題星2018-06-03

                      您可以通過答題星輕松地創建試卷

                      全階人生考試2018-06-03

                      各種考試題,題庫,初中,高中,大學四六

                      運動步數有氧達人2018-06-03

                      記錄運動步數,積累氧氣值。還可偷

                      每日養生app2018-06-03

                      每日養生,天天健康

                      體育訓練成績評定2018-06-03

                      通用課目體育訓練成績評定