高中生也能讀懂的Docker入門教程

Docker 是 Golang 編寫的铣揉, 自 2013 年推出以來,受到越來越多的開發(fā)者的關注餐曹。如果你關注最新的技術發(fā)展逛拱,那么你一定聽說過 Docker。不管是云服務還是微服務(Microservices)台猴,越來越多的廠商都開始基于 Docker 作為基礎設施自動化的工具朽合。那么什么是 Docker?Docker與傳統(tǒng)的虛擬機有什么區(qū)別饱狂?為何要采用 Docker曹步?如何使用 Docker?

本文休讳,就針對上述提到的問題讲婚,來簡單介紹下 Docker。

什么是 Docker

Docker 是開源的應用容器引擎俊柔。

Docker 可以讓你將所有應用軟件以及它的以來打包成軟件開發(fā)的標準化單元筹麸。

Docker 容器將軟件以及它運行安裝所需的一切文件(代碼、運行時婆咸、系統(tǒng)工具竹捉、系統(tǒng)庫)打包到一起,這就保證了不管是在什么樣的運行環(huán)境尚骄,總是能以相同的方式運行块差。就好像 Java 虛擬機一樣,“一次編寫倔丈,到處運行(Write once, run anywhere)”憨闰,而 Docker 是“一次構建,到處運行(Build once需五,run anywhere)”鹉动。

Docker 是一種“容器即服務”(Docker Containers as a Service ,簡稱 CaaS)宏邮,使得開發(fā)和IT運營團隊可以對于應用的構建泽示、發(fā)布、運行更加敏捷和可控蜜氨。

概括的說:Docker 是為開發(fā)人員和系統(tǒng)管理員用于構建械筛、發(fā)布、并運行分布式應用程序的開放式平臺飒炎。該平臺由 Docker 引擎(一個便攜埋哟、輕巧的運行時和打包工具) 和 Docker Hub (一個共享應用程序和自動化工作流的云服務)等組成。Docker 可以使應用程序從組件迅速組裝并消除了開發(fā)郎汪、質量保證和生產(chǎn)環(huán)境之間的摩擦問題赤赊。這樣一來闯狱,IT部門可以更快地發(fā)布,而這些應用程序不管是運行在筆記本電腦抛计、數(shù)據(jù)中心的虛擬機哄孤,還是任何的云,其運行過程和結果都是一致的吹截。

我們再來看下 Docker 的 Logo 录豺。很明顯,這是一只鯨魚饭弓,它托著許多集裝箱。我們可以把宿主機可當做這只鯨魚媒抠,把相互隔離的容器可看成集裝箱弟断,每個集裝箱中都包含自己的應用程序。這 Logo 簡直的太形象了趴生!

Docker 的優(yōu)點

輕量級:所有容器在一臺機器上共享同一個操作系統(tǒng)內核阀趴,這樣他們立即開始,并更有效地利用內存苍匆。Image 是從分層文件系統(tǒng)的構建刘急,這樣他們能夠共享公共文件,使得磁盤使用率和 Image 的下載更加高效浸踩。

開放:Docker 容器是基于開發(fā)的標準叔汁,允許容器運行在主流的 Linux 發(fā)布版和 Microsoft 操作系統(tǒng)作為所有的基礎設施。

安全:容器使得應用程序彼此隔離检碗,而基礎架構同時為應用程序提供了額外的保護層据块。

Docker 與 虛擬機的區(qū)別

容器與虛擬機有著類似的資源隔離和分配的優(yōu)點,但不同的架構方法使容器能夠更加便攜折剃,高效等另假。

虛擬機的架構

每個虛擬機都包括應用程序、必要的二進制文件和庫以及一個完整的客戶操作系統(tǒng)(Guest OS)怕犁,盡管它們被分離边篮,它們共享并利用主機的硬件資源,將近需要十幾個 GB 的大小奏甫。

容器的架構

容器包括應用程序及其所有的依賴戈轿,但與其他容器共享內核。它們以獨立的用戶空間進程形式運行在主機操作系統(tǒng)上扶檐。他們也不依賴于任何特定的基礎設施凶杖,Docker 容器可以運行在任何計算機上,任何基礎設施和任何云上款筑。

Docker 的容器利用了 LXC智蝠,管理利用了 namespaces 來做權限的控制和隔離腾么,cgroups 來進行資源的配置,并且還通過 aufs 來進一步提高文件系統(tǒng)的資源利用率杈湾,而這些技術都不是 Docker 獨創(chuàng)解虱。

LXC

LXC 與虛擬機的不同之處在于,它是一個操作系統(tǒng)級別的虛擬化環(huán)境漆撞,而不是硬件虛擬化環(huán)境殴泰。他們都做同樣的事情,但 LXC 是操作系統(tǒng)級別的虛擬化環(huán)境浮驳,虛擬環(huán)境有它自己的進程和網(wǎng)絡空間悍汛,而不是創(chuàng)建一個完整成熟的虛擬機。因此至会,一個 LXC 虛擬操作系統(tǒng)具有最小的資源需求离咐,并啟動只需幾秒鐘。

正如你可以在下圖中看到的奉件,左側是 LXC 虛擬的 Ubuntu 宵蛀,默認安裝使用 11 MB 大小。

Docker 與 Microservices 的關系

Microservices(微服務) 依賴于“基礎設施自動化”县貌,而 Docker 正是“基礎設施自動化”的利器术陶。可以說 Docker 的火爆煤痕,一定程度上也帶動了微服務架構的興起梧宫,而微服務的廣泛應用也促進了 Docker 繁榮“诘铮可以說兩者相輔相成祟敛。

有關微服務的介紹,可以移步至《簡述 Microservices(微服務)》兆解。

http://www.importnew.com/24651.html

為什么要用 Docker

開發(fā)更加敏捷:Docker 讓開發(fā)人員可以自由定義環(huán)境馆铁,創(chuàng)建和部署的應用程序更快、更容易锅睛,IT 運維人員快速應對變化也更加靈活性埠巨。

更加可控:Docker 使得開發(fā)人員保存從基礎設施到應用的代碼,幫助 IT 運維人管理擁有標準的现拒、安全的辣垒、可擴展的操作環(huán)境。

高可移植性:Docker 允許自由選擇印蔬,可以是從筆記本電腦到一個團隊勋桶,從私人基礎設施到公共云提供商。

這樣,你可以專注于開發(fā)應用例驹,其他的繁瑣事交給 Docker 去做吧捐韩。

如何使用 Docker

這可真是一個大話題,如果完整闡述足夠寫一本書了鹃锈。好在我們的目的是做入門普及荤胁,因此我們就簡單講一下 Docker 的安裝、基本使用和常用命令屎债。

Docker安裝

建議在linux環(huán)境下安裝Docker仅政,window環(huán)境搭建比較復雜且容易出錯,使用Centos7+yum來安裝Docker環(huán)境很方便盆驹。

Docker 軟件包已經(jīng)包括在默認的 CentOS-Extras 軟件源里圆丹。因此想要安裝 docker,只需要運行下面的 yum 命令:

yum?install?docker

安裝完成后躯喇,使用下面的命令來啟動 docker 服務运褪,并將其設置為開機啟動:

service docker?start

chkconfig docker?on

LCTT 譯注:此處采用了舊式的 sysv 語法,如采用CentOS 7中支持的新式 systemd 語法玖瘸,如下:

service docker?start

chkconfig docker?on

測試

docker?version

輸入上述命令,返回docker的版本相關信息檀咙,證明docker安裝成功雅倒。

Hello World

下面,我們通過最簡單的 image 文件"hello world"弧可,感受一下 Docker蔑匣。

因為國內連接 Docker 的官方倉庫很慢,因此我們在日常使用中會使用Docker 中國加速器棕诵。通過 Docker 官方鏡像加速裁良,中國區(qū)用戶能夠快速訪問最流行的 Docker 鏡像。該鏡像托管于中國大陸校套,本地用戶現(xiàn)在將會享受到更快的下載速度和更強的穩(wěn)定性价脾,從而能夠更敏捷地開發(fā)和交付 Docker 化應用。

Docker 中國官方鏡像加速可通過 registry.docker-cn.com訪問笛匙。該鏡像庫只包含流行的公有鏡像侨把,私有鏡像仍需要從美國鏡像庫中拉取。

修改系統(tǒng)中docker對應的配置文件即可妹孙,如下:

vi /etc/docker/daemon.json

#添加后

{

"registry-mirrors": ["https://registry.docker-cn.com"],

"live-restore":?true

}

運行下面的命令秋柄,將 image 文件從倉庫抓取到本地。

docker?pull library/hello-world

上面代碼中蠢正,docker image pull是抓取 image 文件的命令骇笔。library/hello-world是 image 文件在倉庫里面的位置,其中l(wèi)ibrary是 image 文件所在的組,hello-world是 image 文件的名字笨触。

抓取成功以后懦傍,就可以在本機看到這個 image 文件了。

docker images

#顯示結果

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB

現(xiàn)在旭旭,運行這個 image 文件谎脯。

docker run hello-world

#顯示結果

Hello from Docker!

This message shows that your installation appears?to?be?working correctly.

...

輸出這段提示以后,hello world就會停止運行持寄,容器自動終止源梭。有些容器不會自動終止,因為提供的是服務稍味,比如Mysql鏡像等废麻。

常用命令

除過以上我們使用的Docker命令外,Docker還有一些其它常用的命令模庐。

拉取docker鏡像

docker?pull image_name

查看宿主機上的鏡像烛愧,Docker鏡像保存在/var/lib/docker目錄下:

docker?images

刪除鏡像

docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30

查看當前有哪些容器正在運行

docker?ps

查看所有容器

docker?ps?-a

啟動、停止掂碱、重啟容器命令:

docker?start?container_name/container_id

docker?stop?container_name/container_id

docker restart container_name/container_id

后臺啟動一個容器后怜姿,如果想進入到這個容器,可以使用attach命令:

docker?attach container_name/container_id

刪除容器的命令

docker?rm container_name/container_id

查看當前系統(tǒng)Docker信息

docker?info

從Docker hub上下載某個鏡像:

docker pull centos:latest

docker pull centos:latest

執(zhí)行docker pull centos會將Centos這個倉庫下面的所有鏡像下載到本地repository疼燥。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末沧卢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子醉者,更是在濱河造成了極大的恐慌但狭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撬即,死亡現(xiàn)場離奇詭異立磁,居然都是意外死亡,警方通過查閱死者的電腦和手機剥槐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門唱歧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粒竖,你說我怎么就攤上這事迈喉。” “怎么了温圆?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵挨摸,是天一觀的道長。 經(jīng)常有香客問我岁歉,道長得运,這世上最難降的妖魔是什么膝蜈? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮熔掺,結果婚禮上饱搏,老公的妹妹穿的比我還像新娘。我一直安慰自己置逻,他們只是感情好推沸,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著券坞,像睡著了一般鬓催。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恨锚,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天宇驾,我揣著相機與錄音,去河邊找鬼猴伶。 笑死课舍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的他挎。 我是一名探鬼主播筝尾,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼办桨!你這毒婦竟也來了筹淫?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤崔挖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庵寞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狸相,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年捐川,在試婚紗的時候發(fā)現(xiàn)自己被綠了脓鹃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡古沥,死狀恐怖瘸右,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情岩齿,我是刑警寧澤太颤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站盹沈,受9級特大地震影響龄章,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一做裙、第九天 我趴在偏房一處隱蔽的房頂上張望岗憋。 院中可真熱鬧,春花似錦锚贱、人聲如沸仔戈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽监徘。三九已至,卻和暖如春卦绣,著一層夾襖步出監(jiān)牢的瞬間耐量,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工滤港, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留廊蜒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓溅漾,卻偏偏與公主長得像山叮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子添履,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容