您好,登錄后才能下訂單哦!
本篇內容介紹了“Docker容器與容器云的優點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一、從容器到容器云
1.容器技術的好處:
持續部署與測試
跨云平臺支持
環境標準化和版本控制
高資源利用率與隔離
容器跨平臺性與鏡像
易于理解且易用
應用鏡像倉庫
2.容器云:以容器為資源分割和調度的基本單位,封裝整個軟件運行時環境,為開發者和系統管理員提供用于構建、發布和運行分布式應用的平臺
二、Docker基礎
1.docker rmi命令刪除鏡像;docker rm刪除容器;都提供-f選項,可強制刪除存在容器的鏡像或啟動中的容器
三、Docker核心原理解讀
A.Docker背后的內核知識
1.Docker容器本質上是宿主機上的進程,通過namespace實現了資源隔離,通過cgroups實現了資源限制,通過寫時復制機制(copy-on-write)實現了高效的文件操作
2.6種namespace資源隔離:UTS(主機名與域名)、IPC(信號量、消息隊列和共享內存)、PID(進程編號)、Network(網絡設備、網絡棧、端口等)、Mount(掛載點,文件系統)、User(用戶和用戶組)
3.cgroups是Linux內核提供的一種機制,這種機制可以根據需求把一系列系統任務及其子任務融合(或分隔)到按資源劃分等級的不同組內,從而為系統資源管理提供一個統一的框架,本質上是內核附加在程序上的一系列鉤子(hook),通過程序運行時對資源的調度觸發相應的鉤子以達到資源追蹤和限制的目的
B.Docker架構概覽
1.docker/docker.go是所有命令的起始
2.api目錄下是所有與“client如何發送請求”“server如何響應請求”相關的文件
3.api/client/xxx.go中定義Cmdxxx函數,其中調用的cli.client.xxx函數指明了該命令發起何種HTTP請求
4.每個請求的處理函數都會對應一個daemon/xxx.go文件,daemon會使用其中相應的函數來對請求進行處理
5.daemon所使用到的Container對象即container/container_unix.go
C.libcontainer
1.libcontainer本身主要分為三大塊工作內容,一是的創建及初始化,二是容器生命周期管理,三是進程管理,調用方為Docker的execdriver
D.Docker鏡像管理
1.Docker鏡像是一個只讀的Docker容器模板,含有啟動Docker容器所需的文件系統結構及其內容,因此是啟動一個Docker容器的基礎,鏡像文件內容以及一些運行Docker容器的配置文件組成了Docker容器的靜態文件系統運行環境——rootfs
2.rootfs是Docker容器在啟動時內部進程可見的文件系統,即Docker容器的根目錄
3.Docker鏡像的主要特點:分層、寫時復制、內容尋址、聯合掛載
4.鏡像關鍵概念:registry、manifest、image和layer、Dockerfile
E.Docker存儲管理
1.常用存儲驅動:aufs、btrfs、zfs、devicemapper、overlay和vfs
F.Docker數據卷
1.volume是存在于一個或多個容器中的特定文件或文件夾,這個目錄以獨立于聯合文件系統的形式在宿主機中存在,提供以下便利:
在容器創建時就會初始化,在容器運行時就可以使用其中的文件
能在不同的容器之間共享和重用
對volume中數據的操作會馬上生效
對volume中數據的操作不會影響到鏡像本身
volume的生存周期獨立于容器的生存周期
G.Docker網絡管理
1.Docker在1.9版本引入了一整套的docker network子命令和跨主機的網絡支持,在libnetwork中使用了CNM(Container Network Model),CNM定義了構建容器虛擬化網絡的模型,同時還提供了可以用于開發多種網絡驅動的標準化接口和組件
2.CNM的3個核心組件:沙盒、端點、網絡
3.libnetwork中的5種內置驅動:bridge驅動、host驅動、overlay驅動、remote驅動、null驅動
4.docker network connect命令會在所連接的容器中創建新的網卡,以完成其與所指定網絡的連接
H.Docker與容器安全
1.Docker安全問題
磁盤資源限制問題
容器逃逸問題
容器DoS攻擊與流量限制問題
超級權限問題
2.Docker安全的解決方案:SELinux、磁盤限額、宿主機內容器流量限制、GRSecurity內核安全增強工具
四、Docker高級實踐技巧
A.容器化思維
1.容器的本質是一個進程以及運行該進程所需要的各種依賴
2.我們不需要去備份一個容器,而是應該把需要備份的數據放在容器外掛的volume里或者數據庫里
B.Dockerfile最佳實踐
1.Dockerfile實踐心得:使用標簽、謹慎選擇基礎鏡像、充分利用緩存、正確使用ADD與COPY指令、RUN指令、CMD和ENTRYPOINT指令、不要在Dockerfile中做端口映射、使用Dockerfile共享Docker鏡像
C.Docker容器的監控手段
1.監控命令:docker ps、docker images、docker stats、docker inspect、docker top、docker port
2.常用監控工具:Google的cAdvisor、Datadog、SoundCloud的Prometheus
D.容器化應用構建的基礎:高可用配置中心
1.etcd是一個鍵值存儲倉庫,用于配置共享和服務發現,特點:簡單、安全、快速、可信
2.服務發現就是在同一個分布式集群中的進程和服務,互相感知并建立連接
五、構建自己的容器云
六、專注編排與部署:三劍客與Fleet
A.編排小神器Fig/Compose
1.編排,即orchestration,它根據被部署對象之間的耦合關系,以及被部署對象對環境依賴,制定部署流程中各個動作的執行順序,部署過程所需要的依賴文件和被部署文件的存儲位置和獲取 方式,以及如何驗證部署成功
2.部署,即deployment,是指按照編排所指定的內容和流程,在目標機器 上執行編排指定環境初始化,存放指定的依賴和文件,運行指定的部署動作,最終按照編排中的規則來確認部署成功
3.Dockerfile重現一個容器,Compose重現容器的配置和集群
4.docker-compose的局限性:面向單宿主機部署,網絡和存儲也很棘手
B.跨平臺宿主環境管理工具Machine
1.Machine把用戶搭建Docker環境的各種方案匯集在一起,既一目了然又簡化了Docker環境的搭建過程,讓用戶能繼續將時間投入到應用開發上,而不是無謂地花費在環境搭建上
C.集群抽象具Swarm
1.Swarm最大程序兼容Docker的遠程API,使得所有直接調用Docker遠程API的程序能方便地將后端替換為Swarm,包括Docker官方客戶端,以及Fig、Flynn和Deis這類集群化管理使用Docker的工具
D.編排之秀Fleet
1.每臺安裝了CoreOS的機器本身就是這個容器云的一個節點,操作系統提供對容器編排、部署、管理、運維的功能,
2.Fleet說白了就是一個面向服務器集群來控制systemd的管理工具而已
七、專注應用支撐和運行時:Flynn和Deis
A.Flynn,一個小而美的兩層架構
1.Flynn,一個具有Layer0和Layer1兩層架構的類PaaS項目,嚴格意義上是一套面向“服務發布”的框架
Layer0:分布式配置和協調、任務調度、服務發現、宿主機抽象
Layer1:API控制器、Git接收器、Buildpacks、路由組件
B.談Deis與Flynn
1.Deis是純粹的面向應用發布的架構,嚴格區分“服務”和“應用”的關系,是一個更加貼近應用和經典PaaS平臺的真正意義上的Docker PaaS云
八、一切皆容器:Kubernetes
1.脫胎于Google內部的大規模集群管理工具Borg,還是一個管理跨主機容器化應用的系統,實現了包括應用部署、高可用管理和彈性伸縮在內的一系列基礎功能并封裝成為一套完事、簡單易用的RESTful API對象提供服務
“Docker容器與容器云的優點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。