彈性架構設計之運維技術棧
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
相關文章
- 微服務之架構技術選型與設計微服務架構
- 揭秘 | 運維堡壘機 高效安全運維設計與架構落地運維架構
- CynosDB技術詳解——架構設計架構
- 彈性伸縮:高可用架構利器(架構+演算法+思維)架構演算法
- 微服務架構技術棧:程式設計師必須掌握的微服務架構框架詳細解析微服務架構程式設計師框架
- Linux運維就業技術指導(九)期末架構考核Linux運維就業架構
- 技術棧查漏補缺——架構師架構
- 深入淺出 OceanBase 運維之彈性擴縮容運維
- wemall全棧移動商城技術架構分享全棧架構
- 程式設計師、技術主管和架構師程式設計師架構
- 讀書筆記 之《軟體架構設計: 大型網站技術架構與業務架構融合之道》筆記架構網站
- 乾貨分享:容器 PaaS 新技術架構下的運維實踐架構運維
- 乾貨!運維必知的9種高效能技術架構運維架構
- 如何實現彈性架構架構
- 微服務架構之「 容器技術 」微服務架構
- 2024年的雲原生架構需要哪些技術棧架構
- 後端技術雜談8:OpenStack架構設計後端架構
- 架構設計之架構的演變架構
- Android 架構之長連線技術Android架構
- 阿里本地生活端智慧架構設計與技術探索阿里架構
- .NET 技術棧 思維導圖
- 快速創業之全棧技術棧創業全棧
- arm64 架構之入棧/出棧操作架構
- Spring技術內幕:設計理念和整體架構概述Spring架構
- springblade技術架構Spring架構
- 第6章:可維護性軟體構建方法 6.3可維護性構建技術
- 架構設計之資料分片架構
- 架構設計之“服務限流”架構
- Linux運維可以自學嗎?Linux運維技術Linux運維
- 直播CDN排程技術關鍵挑戰與架構設計架構
- 【解決方案】多租戶技術架構設計入門(一)架構
- 小工匠聊架構 - 分散式快取技術_快取設計架構分散式快取
- session一致性架構設計Session架構
- IPv6過渡技術之雙棧技術
- 探探的IM長連線技術實踐:技術選型、架構設計、效能優化架構優化
- 《深入react技術棧》之表單React
- springcloud技術架構理解SpringGCCloud架構
- 網站技術架構網站架構