亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

8個你可能不知道的Docker知識

2024-09-01 13:52:09
字體:
來源:轉載
供稿:網友

自從上世紀 90 年代硬件虛擬化被主流的技術廣泛普及之后,對數據中心而言,發生的最大的變革莫過于容器和容器管理工具,例如:Docker。在過去的一年內,Docker 技術已經逐漸走向成熟,并且推動了大型初創公司例如 Twitter 和 Airbnb 的發展,甚至在銀行、連鎖超市、甚至 NASA 的數據中心都贏得了一席之地。當我幾年前第一次直到 Docker 的時候,我還對 Docker 的未來持懷疑的態度,我認為他們是把以前的 Linux 容器的概念拿出來包裝了一番推向市場。但是使用 Docker 成功進行了幾個項目 例如 Spantree 之后,我改變了我的看法:Docker 幫助我們節省了大量的時間和經歷,并且已經成為我們技術團隊中不可或缺的工具。 

GitHub 上面每天都會催生出各式各樣的工具、形態各異的語言和千奇百怪的概念。如果你和我一樣,沒有時間去把他們全部都測試一遍,甚至沒有時間去親自測試 Docker,那么你可以看一下我的這篇文章:我將會用我們在 Docker 中總結的經驗來告訴你什么是 Docker、為什么 Docker 會這么火。 

Docker 是容器管理工具

Docker 是一個輕量級、便攜式、與外界隔離的容器,也是一個可以在容器中很方便地構建、傳輸、運行應用的引擎。和傳統的虛擬化技術不同的是,Docker 引擎并不虛擬出一臺虛擬機,而是直接使用宿主機的內核和硬件,直接在宿主機上運行容器內應用。也正是得益于此,Docker 容器內運行的應用和宿主機上運行的應用性能差距幾乎可以忽略不計。 

但是 Docker 本身并不是一個容器系統,而是一個基于原有的容器化工具 LXC 用來創建虛擬環境的工具。類似 LXC 的工具已經在生產環境中使用多年,Docker 則基于此提供了更加友好的鏡像管理工具和部署工具。 

Docker 不是虛擬化引擎

Docker 第一次發布的時候,很多人都拿 Docker 和虛擬機 VMware、KVM 和 VirtualBox 比較。盡管從功能上看,Docker 和虛擬化技術致力于解決的問題都差不多,但是 Docker 卻是采取了另一種非常不同的方式。虛擬機是虛擬出一套硬件,虛擬機的系統進行的磁盤操作,其實都是在對虛擬出來的磁盤進行操作。當運行 CPU 密集型的任務時,是虛擬機把虛擬系統里的 CPU 指令“翻譯”成宿主機的CPU指令并進行執行。兩個磁盤層,兩個處理器調度器,兩個操作系統消耗的內存,所有虛擬出的這些都會帶來相當多的性能損失,一臺虛擬機所消耗的硬件資源和對應的硬件相當,一臺主機上跑太多的虛擬機之后就會過載。而 Docker 就沒有這種顧慮。Docker 運行應用采取的是“容器”的解決方案:使用 namespace 和 CGroup 進行資源限制,和宿主機共享內核,不虛擬磁盤,所有的容器磁盤操作其實都是對 /var/lib/docker/ 的操作。簡言之,Docker 其實只是在宿主機中運行了一個受到限制的應用程序。

從上面不難看出,容器和虛擬機的概念并不相同,容器也并不能取代虛擬機。在容器力所不能及的地方,虛擬機可以大顯身手。例如:宿主機是 Linux,只能通過虛擬機運行 Windows,Docker 便無法做到。再例如,宿主機是 Windows,Windows 并不能直接運行 Docker,Windows上的 Docker 其實是運行在 VirtualBox 虛擬機里的。 

Docker 使用層級的文件系統 

前面提到過,Docker 和現有容器技術 LXC 等相比,優勢之一就是 Docker 提供了鏡像管理。對于 Docker 而言,鏡像是一個靜態的、只讀的容器文件系統的快照。然而不僅如此,Docker 中所有的磁盤操作都是對特定的Copy-On-Write文件系統進行的。下面通過一個例子解釋一下這個問題。 

例如我們要建立一個容器運行 JAVA Web 應用,那么我們應該使用一個已經安裝了 JAVA 的鏡像。在 Dockerfile(一個用于生成鏡像的指令文件)中,應該指明“基于 JAVA 鏡像”,這樣 Docker 就會去 Docker Hub Registry 上下載提前構建好的 JAVA 鏡像。然后再 Dockerfile 中指明下載并解壓 Apache Tomcat 軟件到 /opt/tomcat 文件夾中。這條命令并不會對原有的 JAVA 鏡像產生任何影響,而僅僅是在原有鏡像上面添加了一個改動層。當一個容器啟動時,容器內的所有改動層都會啟動,容器會從第一層中運行 /usr/bin/java 命令,并且調用另外一層中的 /opt/tomcat/bin 命令。實際上,Dockerfile 中每一條指令都會產生一個新的改動層,即便只有一個文件被改動。如果用過 Git 就能更清楚地認識這一點,每條指令就像是每次 commit,都會留下記錄。但是對于 Docker 來說,這種文件系統提供了更大的靈活性,也可以更方便地管理應用程序。 

我們Spantree的團隊有一個自己維護的含有 Tomcat 的鏡像。發布新版本也非常簡單:使用 Dockerfile 將新版本拷貝進鏡像從而創建一個新鏡像,然后給新鏡像貼上版本的標簽。不同版本的鏡像的不同之處僅僅是一個 90 MB 大小的 WAR 文件,他們所基于的主鏡像都是相同的。如果使用虛擬機去維護這些不同的版本的話,還要消耗掉很多不同的磁盤去存儲相同的系統,而使用 Docker 就只需要很小的磁盤空間。即便我們同時運行這個鏡像的很多實例,我們也只需要一個基礎的 JAVA / TOMCAT 鏡像。 

Docker 可以節約時間 

很多年前我在為一個連鎖餐廳開發軟件時,僅僅是為了描述如何搭建環境都需要寫一個 12 頁的 Word 文檔。例如本地 Oracle 數據庫,特定版本的 JAVA,以及其他七七八八的系統工具和共享庫、軟件包。整個搭建過程浪費掉了我們團隊每個人幾乎一天的時間,如果用金錢衡量的話,花掉了我們上萬美金的時間成本。雖然客戶已經對這種事情習以為常,甚至認為這是引入新成員、讓成員適應環境、讓自己的員工適應我們的軟件所必須的成本,但是相比較起來,我們寧愿把更多的時間花在為客戶構建可以增進業務的功能上面。 

如果當時有 Docker,那么構建環境就會像使用自動化搭建工具 Puppet / Chef / Salt / Ansible 一樣簡單,我們也可以把整個搭建時間周期從一天縮短為幾分鐘。但是和這些工具不同的地方在于,Docker 可以不僅僅可以搭建整個環境,還可以將整個環境保存成磁盤文件,然后復制到別的地方。需要從源碼編譯 Node.js 嗎?Docker 做得到。Docker 不僅僅可以構建一個 Node.js 環境,還可以將整個環境做成鏡像,然后保存到任何地方。當然,由于 Docker 是一個容器,所以不用擔心容器內執行的東西會對宿主機產生任何的影響。 

現在新加入我們團隊的人只需要運行 docker-compose up 命令,便可以喝杯咖啡,然后開始工作了。 

Docker 可以節省開銷

當然,時間就是金錢。除了時間外,Docker 還可以節省在基礎設施硬件上的開銷。高德納和麥肯錫的研究表明,數據中心的利用率在 6% – 12% 左右。不僅如此,如果采用虛擬機的話,你還需要被動地監控和設置每臺虛擬機的 CPU 硬盤和內存的使用率,因為采用了靜態分區(static partitioning)所以資源并不能完全被利用。。而容器可以解決這個問題:容器可以在實例之間進行內存和磁盤共享。你可以在同一臺主機上運行多個服務、可以不用去限制容器所消耗的資源、可以去限制資源、可以在不需要的時候停止容器,也不用擔心啟動已經停止的程序時會帶來過多的資源消耗。凌晨三點的時候只有很少的人會去訪問你的網站,同時你需要比較多的資源執行夜間的批處理任務,那么可以很簡單的便實現資源的交換。 

虛擬機所消耗的內存、硬盤、CPU 都是固定的,一般動態調整都需要重啟虛擬機。而用 Docker 的話,你可以進行資源限制,得益于 CGroup,可以很方便動態調整資源限制,讓然也可以不進行資源限制。Docker 容器內的應用對宿主機而言只是兩個隔離的應用程序,并不是兩個虛擬機,所以宿主機也可以自行去分配資源。

Docker 有一個健壯的鏡像托管系統

前面提到過,這個托管系統就叫做 Docker Hub Registry。截止到 2015年4月29日,互聯網上大約有 14000 個公共的 Docker,而大部分都被托管在 Docker Hub 上面。和 Github 已經很大程度上成為開源項目的代表一樣,Docker 官方的 Docker Hub 則已經是公共 Docker 鏡像的代表。這些鏡像可以作為你應用和數據服務的基礎。 

也正是得益于此,你可以隨意嘗試最新的技術:說不定有些人就把圖形化數據庫的實例打包成了 Docker 鏡像托管在上面。再例如 Gitlab,手工搭建 Gitlab 非常困難,譯者不建議普通用戶去手工搭建,而如果使用 Docker Gitlab,這個鏡像則會五秒內便搭建完成。再例如特定 Ruby 版本的 Rails 應用,再例如 Linux 上的 .NET 應用,這些都可以使用簡單的一條 Docker 命令搭建完成。 

Docker 官方鏡像都有 official 標簽,安全性可以保證。但是第三方鏡像的安全性無法保證,所以請謹慎下載第三方鏡像。生產環境下可以只使用第三方提供的 Dockerfile 構建鏡像。 
Docker Github 介紹:5 秒內搞定一個 Gitlab 
關于 Linux 上的 .NET 應用和 Rails 應用,將會在以后的文章中做詳細介紹。 

Docker 可以避免產生 Bug

Spantree 一直是“固定基礎設置”(immutable infrastructure)的狂熱愛好者。換句話說,除非有心臟出血這種漏洞,我們盡量不對系統做升級,也盡量不去改變系統的設置。當添加新服務器的時候,我們也會從頭構建服務器的系統,然后直接將鏡像導入,將服務器放入負載均衡的集群里,然后對要退休的服務器進行健康檢查,檢查完畢后移除集群。得益于 Docker 鏡像可以很輕松的導入導出,我們可以最大程度地減少因為環境和版本問題導致的不兼容,即便有不兼容了也可以很輕松地回滾。當然,有了 Docker,我們在生產、測試和開發中的運行環境得到統一。以前在協同開發時,會因為每個人開發的電腦配置不同而導致“在我的電腦上是能運行的,你的怎么不行”的情況,而如今 Docker 已經幫我們解決了這個問題。 

Docker 目前只能運行在 Linux 上

 前面也提到過,Docker 使用的是經過長時間生產環境檢驗的技術,雖然這些技術已經都出現很長時間了,但是大部分技術都還是 Linux 獨有的,例如 LXC 和 Cgroup。也就是說,截止到現在,Docker 容器內只能在 Linux 上運行 Linux 上的服務和應用。Microsoft 正在和 Docker 緊密合作,并且已經宣布了下一個版本的 Windows Server 將會支持 Docker 容器,并且命名為 Windows Docker,估計采用的技術應該是Hyper-V Container,我們有望在未來的幾年內看到這個版本。 

除此之外,類似 boot2docker 和 Docker Machine 這種工具已經可以讓我們在 Mac 和 Windows 下通過虛擬機運行 Docker 了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品一区二区亚洲| 欧美成在线观看| 成人福利视频在线观看| 97av在线视频免费播放| 亚洲精品99999| 日韩暖暖在线视频| 日韩av在线导航| 成人网址在线观看| 国产精品亚洲自拍| 亚洲精品久久久久久久久久久久| 欧美大成色www永久网站婷| 久久男人资源视频| 亚洲精品资源美女情侣酒店| 国产91色在线| 国产成人精品免高潮在线观看| 日韩成人av网| 在线成人免费网站| 日本精品视频网站| 久久久久在线观看| 国产日韩专区在线| 国产一区红桃视频| 国产日韩欧美黄色| 精品国产老师黑色丝袜高跟鞋| 亚洲人成在线观看| 国产成人自拍视频在线观看| 国产精品专区h在线观看| 国产精品久久精品| 欧美性猛交xxxxx水多| 亚洲一区二区三区四区在线播放| 另类图片亚洲另类| 日韩av成人在线| 91精品国产免费久久久久久| 亚洲精品久久久一区二区三区| 亚洲第一区在线观看| 久久99久国产精品黄毛片入口| 国内精品久久久久久影视8| 欧美成人免费在线视频| 欧美高清videos高潮hd| 91精品在线播放| 久久精品色欧美aⅴ一区二区| 亚洲永久在线观看| 色综合天天综合网国产成人网| 中文字幕免费精品一区高清| 亚洲精品福利免费在线观看| 日韩在线精品视频| 俺也去精品视频在线观看| 爽爽爽爽爽爽爽成人免费观看| 中文字幕亚洲综合久久筱田步美| 日韩高清欧美高清| 亚洲日本aⅴ片在线观看香蕉| 国产91ⅴ在线精品免费观看| 日本伊人精品一区二区三区介绍| 亚洲第一精品福利| 亚洲色图校园春色| 亚洲另类激情图| 欧美高清视频免费观看| 国产精品久久9| 亚洲2020天天堂在线观看| 国产成+人+综合+亚洲欧洲| 国产精品18久久久久久麻辣| 热99精品只有里视频精品| 91精品视频在线| 亚洲精品日韩激情在线电影| 精品欧美aⅴ在线网站| 中文字幕日韩精品在线| 亚洲性69xxxbbb| 国产不卡av在线免费观看| 日韩在线观看你懂的| 亚洲国产成人久久综合| 国产精品视频男人的天堂| 精品中文视频在线| 中文字幕亚洲一区二区三区| 亚洲精品www久久久久久广东| 欧美在线视频免费播放| 国产成人精品a视频一区www| 久久久在线观看| 国产精品扒开腿做爽爽爽的视频| 国产精品视频一区国模私拍| 91九色国产在线| 国产a∨精品一区二区三区不卡| 久久久国产精彩视频美女艺术照福利| 国产精品自产拍在线观看| 在线国产精品视频| 亚洲区一区二区| xxxx欧美18另类的高清| 色99之美女主播在线视频| 国产精品高精视频免费| 欧美日韩激情视频8区| 日韩在线免费视频观看| 中文字幕日韩有码| 91色在线观看| 欧美特级www| 欧美洲成人男女午夜视频| 日韩精品视频在线观看网址| 久久久久99精品久久久久| 亚洲**2019国产| 国内精品视频久久| 亚洲精品在线不卡| 欧美高清视频一区二区| 黄色精品在线看| 在线看日韩av| 亚洲天堂av电影| 中文字幕日韩欧美在线| 日韩成人av一区| 欧美日韩亚洲国产一区| 日本乱人伦a精品| 91精品啪aⅴ在线观看国产| 国产suv精品一区二区| 亚洲视频在线观看免费| 欧美性猛xxx| 69**夜色精品国产69乱| 欧美大肥婆大肥bbbbb| 国产精品久久久久福利| 国语自产在线不卡| 亚洲欧美色婷婷| 日本一区二三区好的精华液| 欧美日韩国产精品一区二区不卡中文| 91精品久久久久久久久久久| 欧美激情久久久久| 国产精品444| 欧美精品免费播放| 国产成人aa精品一区在线播放| 成人福利免费观看| 久久九九国产精品怡红院| 久久99视频精品| 日韩电影中文字幕在线| 97色在线观看免费视频| 国产精品亚洲综合天堂夜夜| 亚洲一区二区三区毛片| 欧美黄色小视频| 日韩a**站在线观看| 亚洲va国产va天堂va久久| 久久亚洲精品毛片| 一区二区三区国产在线观看| 色婷婷综合久久久久中文字幕1| 91亚洲国产精品| 久久香蕉精品香蕉| 欧美日韩免费在线| 精品久久久久久久久久| 深夜福利91大全| 亚洲a区在线视频| 黄色一区二区三区| 国产一区视频在线| 7777精品视频| 国产精品亚洲欧美导航| 在线亚洲欧美视频| 亚洲最大在线视频| 91伊人影院在线播放| 国产精品精品国产| 欧美大尺度在线观看| 永久免费毛片在线播放不卡| 国产精品免费在线免费| 国产精品高潮在线| 国产精品一二区| 综合av色偷偷网| 日韩视频免费在线观看| 日本电影亚洲天堂| 欧美激情亚洲自拍| 538国产精品一区二区在线| 亚洲精品动漫100p| 成人av电影天堂| 久久国产精品99国产精| 欧美激情免费在线| 日本精品久久久|