Docker,容器,虛擬機和紅燒肉

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

Docker是什么?容器又是什么?

Docker 直譯:碼頭工人。是在碼頭上搬運貨物的工人
容器 英文:Container,如果再翻譯回來就有2個不同的釋義:集裝箱/容器。

如果按照這世界上大多數正常人的理解,大家會把 Docker(碼頭工人)和 Container (集裝箱)這一對事物放在一起,他們的關系一目了然:碼頭工人搬運集裝箱。但是如果按照這世界上另外的一類人(程序員)的理解,我們會這樣組合 ,Docker (代碼集裝箱搬運工)和 Container (容器)。

Docker與容器是完全2個不同的東西,Docker是用來組裝/搬運/拆包容器的工具。當然也可以是人,我們原來這些苦逼的程序員誰沒干過zip/copy/paste/unzip的工作呢?其實Docker就是這樣一個工具,用來打包 (build)/傳送(push/pull)/拆包 (run) 那些需要運行的應用。而容器就是那個包。

docker-concept

那么容器又是什么?

其實和集裝箱很類似,就是把那些需要放在一起從A地運送到B地運行的,不能和其他程序混雜的代碼封裝成的一個包而已。這個概念從計算機出現的那天基本上就存在了,只是這么多年我們一直在不停的改進,但從來沒有一個像docker這樣的工具讓容器的使用變的如此簡單。在Unix/Linux的世界里,它曾將叫做 Process Container,現在被稱為Control Group (cGroup);在Windows世界里,我們曾經有組件。他們的目的都一樣,為了把程序從A地運送到B地,同時確保他們可以相互隔離的運行。

Docker絕對不等同于容器。一個是干活的人,一個是被搬運的物品,能一樣嗎?但是我仍然在各種技術文章,會議演講上看到和聽到將他們混為一談的說法。實在覺得需要給他們正名,也是今天寫這個文章的主要原因。

Docker,容器與虛擬機有啥區別?

在每一篇介紹Docker的文章里面都會看到與虛擬機比較的內容,其實我覺得這完全是拿蘋果和香蕉比較,它們完全不具備可比性,至少在技術上!
大家為啥要這樣比較,主要目的是讓那些不了解IT但是卻在管理IT的人(對,就是你的領導和你的客戶)理解為啥他們好不容易,花了n多錢建立起了虛擬化平臺/私有云,現在還要再花錢搞容器,搞docker。對的,這純粹是個市場行為,與技術無關,因為他們在技術上不具備可比性。
慣常的說法,容器啟動迅速(對,它只需要加載那些當前應用的進程)虛擬機啟動緩慢(廢話,它要加載一堆和應用無關的進程好嗎)。你試試把100個應用打包到一個容器里面然后啟動它,估計你一定會被98%的Windows用戶打敗。
給你一個hyper-v, vmware, kvm你跑不了容器,你還是需要在上面啟動虛擬機,然后才能運行容器。就好像你要在家里提供100個品類的菜單,然后讓你兒子每天回來點餐,給他個沙漏,然后說你隨便點,我保證在10分鐘內上菜。你當你是謝霆鋒呢?人家謝大廚后面有10個幫廚,10個采購,10個餐廳經理,10個服務員,做的菜都是提前腌制的。你就算有三頭六臂也只能說:臣妾做不到啊!
所以,容器之所以快,是把每次都要啟動操作系統的操作預先完成了,這樣只需要啟動應用本身而已。而且,容器不會比直接啟動一個應用快,甚至還會更慢一點。

然并卵,那我要這七十二變有何用?

牢騷發夠了,還是說說Docker到底有啥用?Docker這個搬運工與其他搬運工不同的是,他在組裝容器的時候會把應用需要的其他配件都放在一個集裝箱里。這樣,集裝箱到貨以后,直接開包就可以完成應用組裝;不用再到其他地方七拼八湊的去找各種配件了。這就好比你想做紅燒肉,原來的應用打包只給你打包了肉(應用),別的什么八角,香葉,冰糖,生抽老抽(應用依賴環境)都不帶;現在商家提供一站式服務,一個包里不光有肉,還有七七八八所有的東西。你家里有爐子,有鍋就夠了(操作系統)。
另外,Docker厲害的地方在于,它不光提供了這些配料,還把物流給你搞定了。我們現在可以直接向商家(Docker Hub)下單,商家送貨上門(Docker Pull),你準備好爐子和鍋(操作系統),直接下鍋(Docker Run),菜就上桌嘍。

最后,用一句話定義Docker,那就是:優化應用運維過程的工具和生態系統。

晚上吃紅燒肉!祝大家胃口好!

hongshaorou

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450487.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450487.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450487.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac終端操作文件或文件夾(持續更新)

1、復制文件夾(有文件) cp -R 要復制的文件 要復制到哪個路徑 2、復制文件 cp 要復制的文件 要復制到哪個路徑 3、移動文件夾 mvdir 你要移動的文件夾 要移動到哪里

前端進階系列(六):盒模型

盒模型是界面布局需要掌握的基本功。盒模型基本概念 盒模型四要素:margin、border、padding、content。 盒模型分為:標準盒模型(W3C盒模型) 、 怪異盒模型(IE盒模型) 盒模型區別 怪異盒模型總寬度 content…

holer實現外網訪問內網數據庫

外網訪問本地數據庫 本地安裝了數據庫,只能在局域網內訪問,怎樣從公網也能訪問內網數據庫? 本文將介紹使用holer實現的具體步驟。 1. 準備工作 1.1 安裝并啟動數據庫 默認安裝的數據庫端口是3306。 2. 實現步驟 2.1 下載并解壓holer軟件包 Ho…

Docker 概念解析

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Docker的功能定位Docker為基于Linux容器的開源項目,其利用Linux內核中的各項功能——例如命名空間與控制組——以在操作系統之…

C語言 常用API

MySQL的C語言API接口 1、首先當然是連接數據庫,函數原型如下: MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long …

hadoop生態搭建(3節點)-10.spark配置

# https://www.scala-lang.org/download/2.12.4.html# 安裝 scala tar -zxvf ~/scala-2.12.4.tgz -C /usr/local rm –r ~/scala-2.12.4.tgz # http://archive.apache.org/dist/spark/spark-2.3.0/ # 安裝 spark tar -zxf ~/spark-2.3.0-bin-hadoop2.7.tgz -C /usr/local mv /u…

持續集成coding

1、安裝docker yum -y install docker yum -y install composer yum -y install docker-compose 2、啟動docker服務 service docker start 3、測試安裝結果 docker-compose --version 4、創建目錄 mkdir /data/continus-deploy 5、寫入docker-compose.yml version: …

JSON字符串轉換為Map

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 本文是利用阿里巴巴封裝的FastJSON來轉換json字符串的。例子如下: [java] view plain copy package com.zkn.newlearn.json;…

排序與查找 詳細分析

C語言五種基本排序算法 程序員可以使用的基本排序算法有5種: 插入排序(insertionsort.)交換排序(exchangesOrt)選擇排序(selectionsort)歸并排序(mergesort)分布排序(distributionsort) 為了形象地解釋每種排序算法是怎樣工作的,讓我們來看…

《Netkiller Spring Cloud 手札》Spring boot 2.0 mongoTemplate 操作范例

2019獨角獸企業重金招聘Python工程師標準>>> 本文節選自 《Netkiller Spring Cloud 手札》 Netkiller Spring Cloud 手札 Spring Cloud Cookbook Mr. Neo Chan, 陳景峯(BG7NYT) 中國廣東省深圳市望海路半島城邦三期 518067 86 13113668890<netkillermsn.com> …

ZooKeeper原理及使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ZooKeeper是Hadoop Ecosystem中非常重要的組件&#xff0c;它的主要功能是為分布式系統提供一致性協調(Coordination)服務&#xff0c;與…

自律只需要這篇文章

1. 鉆研&#xff0c;只要你有一個方面特別優秀&#xff0c;則在這個社會就足夠了,能夠吃一輩子 2. 領悟&#xff0c;需要的時候&#xff0c;別人給你只是一個具體的方向&#xff0c;具體的路還是要自己去設計 3. 執行力&#xff0c;晚上喜歡想想沒有小本本記錄&#xff0c;那么…

數據和文件操作

怎樣用C語言對某個目錄下的文件名進行排序? 在4&#xff0e;8的例子中&#xff0c;用_dos_findfirst()和_dos_findnext()函數遍歷目錄結構&#xff0c;每找到一個文件名&#xff0c;就把它打印在屏幕上&#xff0c;因此&#xff0c;文件名是逐個被找到并列出來的。當你對某個目…

這些年來什么才是最好的投資?

這些年&#xff0c;就是從我畢業&#xff08;2006&#xff09;以后... 聊投資&#xff0c;不免說股市&#xff1b;股市平時沒什么人談&#xff0c;一般暴漲暴跌時大家的談興就起來了。而最近這一周&#xff0c;全球股市都開啟了暴跌模式&#xff0c;讓投資者虧損慘重&#xff0…

electron安裝比較慢的方法

ELECTRON_MIRROR"https://cdn.npm.taobao.org/dist/electron/" npm install electron

vim 正則非貪婪模式

比如多匹配使用 .* 效果自然是貪婪模式&#xff0c;JS 的非貪婪很簡單&#xff0c;是 .*? 即可&#xff0c;而 vim 不同&#xff0c;語法是 .\{-}&#xff0c;注意 \ 轉義。 轉載于:https://www.cnblogs.com/ZweiZhao/p/10062543.html

循環結構 案例分析

怎樣才能知道循環是否提前結束了 循環通常依賴于一個或多個變量&#xff0c;你可以在循環外檢查這些變量&#xff0c;以確保循環被正確執行。請看下例&#xff1a;int xchar * cp[REQUESTED_BLOCKS]/ * Attempt (in vain, I must add... )toallocate 512 10KB blocks in memory…

工作中常用的但是又容易忽略的問題

個人平時總結 Document 對象 每個載入瀏覽器的 HTML 文檔都會成為 Document 對象。 Document 對象使我們可以從腳本中對 HTML 頁面中的所有元素進行訪問。 提$(document)是一個選擇器&#xff0c;選中的是整個html所有元素的集合示&#xff1a;Document 對象是 Window 對象的一…

JAVA經典面試題匯總(保存這篇就夠了)

一. java基礎篇 1.final 關鍵字的作用? 被 final 修飾的類不可以被繼承。被 final 修飾的方法不可以被重寫。被 final 修飾的變量不可以被改變&#xff0c;如果修飾引用&#xff0c;那么表示引用不可變&#xff0c;引用指向的內容可變。被 final 修飾的方法&#xff0c;JVM …