彈性架構設計之運維技術棧

Coder_Boy_發表於2020-10-03

Docker與K8s基礎

前提:安裝 【虛擬機器、CentOS 7.6】

Docker

概述

一個開源的應用容器引擎,可以輕鬆的為任何應用建立一個輕量級、可移植、自給自足的容器。
Docker平臺就一個軟體集裝箱化的平臺,將應用及其依賴一起打包到容器內,然後這個容器很容易運輸到其他機器平臺上,方便裝載、複製、移除操作,非常適合軟體的彈性架構。利於在開發、測試、部署生產 環境之間進行高效的應用程式生命週期的管理

  • 背景

    • DevOps
    • 微服務(Microservice)
    • 雲原生
    • 物聯網
    • 敏捷開發
    • 混合雲
  • 容器技術發展史

    也是一種資源隔離的虛擬化技術

    • 1979年 UNIX chroot 中提出的概念。chroot是UNIX中的系統呼叫,將一個程式及其子程式的根目錄改變到檔案系統中的一個新位置,讓這些程式只能訪問到這個新的位置,從而達到程式間的隔離的目的。
    • 2000年 FreeBSD 開發了類似chroot的容器技術Jails,這是最早也是功能最多的容器技術。Jails翻譯是監獄 沙箱更合適 ,其包含了檔案系統、使用者、網路、程式等的隔離。
    • 2001年 Linux釋出了自己的容器技術Linux VServer
    • 2004年 Solaris釋出了SolarisContainers
    • 2005年推出OpenVZ 通過對linux核心進行補丁來提供虛擬化支援。
    • 2007年 谷歌實現了Control Groups(Cgroups),能夠限制和隔離一系列程式的資源使用(CPU、記憶體、磁碟IO、網路)
    • 2008年基於Cgroups和LinuxNamespaces推出了第一個最完善的linux容器LXC ,Linux Containers
    • 2013年 DotCloud(後更名Docker)推出到現在為止最流行的容器Docker,其理念·一次構建、隨處執行·,起步階段使用LXC,而後利用自己的libcontainer庫(與谷歌合作的)將其替換下來,包含一套高效的分層式容器映象模型,一套全域性以及本地容器登錄檔,一個精簡化RESTApi和一套命令列介面等
    • 2014年 CoreOS推出一個類似Docker的容器Rocket,其安全性比Docker更嚴格
    • 2016年 微軟在window上提供對容器的支援
    • 目前 容器技術趨於成熟,並且迎來了容器元時代,由此衍生出多種容器雲的平臺管理技術 如k8s(容器編排平臺)最為出眾,這些細粒度的容器叢集管理技術為微服務不斷的發展奠定了基石
  • 容器與虛擬機器的區別

    • 容器是一個應用層的抽象,將程式碼與其依賴打包在一起的,多個容器可以在同一臺機器上執行,共享作業系統核心但各種作為獨立的程式在使用者空間中執行。與虛擬機器相比,容器佔用的空間更少,瞬間即可完成啟動。
    • 虛擬機器則是物理硬體層的抽象,用於將一臺伺服器變成多臺伺服器,允許多個VM在一臺機器上執行,每個VM都包含一套作業系統,一個或多個應用,必要的二進位制檔案和庫資源,因此佔用大量空間,啟動時間也很緩慢。
    • 結合使2者的優勢,可以為應用的部署和管理提供更好的靈活性
  • 3個核心概念

    • 映象

      • 一個特殊的分層式檔案系統,不包含任何動態資料,建立後內容不會被改變
    • 容器

      • 映象執行時的實體:容器的實質是程式,容器的程式執行執行於屬於自己的名稱空間中,容器儲存層的生命週期與容器一樣,容器消亡,容器儲存層隨之消亡,因此任何儲存於容器儲存層的資訊都會隨容器刪除而丟失。容器不應向其儲存層寫入任何資料,應該使用資料卷(Volume)或繫結宿主機目標,這這些位置進行讀寫會跳過容器儲存層,效能與穩定性較高。對應容器儲存層應該保持無狀態化。資料卷的生命週期獨立於容器。
    • 映象倉庫

      • 集中存放映象檔案的地方:一個Docker Registry中可以包含多個倉庫(Repostory),每個倉庫可以包含多個標籤(Tag),每個標籤對應一個映象。通常 一個倉庫會包含一個軟體的不同版本的映象,而標籤就常用於對應軟體的不同版本
      • 公用Docker Registry (Docker Hub)和 私有Docker Registry
  • 2個版本

    • 社群版CE

    • 企業版EE

      • 安全性高
  • 核心優勢

    • 隔離應用
    • 整合資源
    • 搭建輕量級私有PaaS環境
    • 簡化程式碼流水線助力敏捷開發
    • 環境一致性

安裝執行

  • Windows10

    • Docke for windows

      • 64位專業版
      • 支援CPU SLAT功能
      • 至少4G RAM
      • BIOS中啟用虛擬化
      • 啟用Hyper-V
    • 測試安裝

      • docker -v
      • setting中配置共享驅動器設定
      • docker run hello-world
  • Linux

    • 使用Hyper-V快速安裝Ubuntu

      • 安裝Hyper-v
      • 安裝Ubuntu
      • 開啟SSH服務
      • SSH遠端登入
    • 安裝Docker

      • 使用儲存庫安裝

      • 使用指令碼安裝

        • 測試使用,不要用於生產環境
    • 個人桌面烏班圖,生產環境CentOS

    • CentOS

      • Hyper-V搭建

      • VMWare搭建

        • 配置網路卡
        • 安裝Docker
        • CentOS預設已安裝SSH了
        • 學習階段使用:curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh

基礎命令

  • 配置管理命名

    • 登入命令

      • docker login 【option】【server】

        • -p 密碼
        • -u 使用者名稱
        • -stdin 從stdin獲取密碼
        • server指定倉庫地址
    • 拉取映象

      • docker image pull 【option】 NAME[:TAG|@DIGEST]

        • -a 從倉庫獲取所有映象
        • -disable-content-trust 預設值true 跳過映象校驗
        • -platform 設定映象所屬平臺,如果有多個映象服務
    • 列出本地映象

      • docker image ls 【option】[respostory:TAG]

        • -a 顯示所有映象
        • -digests 顯示摘要
        • -f 根據提供的條件過濾輸出
        • -format 格式化輸出
        • -no-trunc 不要截斷輸出
        • -q 僅顯示數字ID
      • docker images

  • 映象命令

  • 容器命令

  • 倉庫管理命令

  • 除錯命名

  • 輔助工具

    • Kitematic

持續開發工作流程

  • 子主題 1
  • 子主題 2

資料庫容器化

  • 子主題 1
  • 子主題 2

應用實戰

  • 子主題 1
  • 子主題 2

K8s

K8s叢集搭建

  • 子主題 1
  • 子主題 2

部署應用到K8s叢集

  • 子主題 1
  • 子主題 2

應用託管到雲端

  • 子主題 1
  • 子主題 2

DevOps

DevOps思想

  • 持續整合CI
  • 持續部署CD

容器化後DevOps

  • 子主題 1

XMind - Trial Version

相關文章