Docker實戰指南(一):Docker介紹

原文地址:Docker實戰指南(一):Docker介紹linux

Introduction

我第一次注意到Docker大概是在2014年的時候,當時對Docker的第一印象就是,哇靠,這不就是LXC + cgroups嗎,新瓶裝舊酒又拿來賣了?這都行?
直到2015年6月,在各大IT巨頭的推進下,Open Container Initiative(OCI)成立,並制定了Open Container的初版接口的標準規範,Docker正式的成爲了Container技術的龍頭。
本系列文章將按部就班的帶您深刻到Docker的方方面面中,讓您體會到Docker相比傳統的LXC技術的優點所在,以及如何將這些優點收爲己用。docker

Docker的前世此生

簡單來講,Docker就是一個應用程序,一個後臺守護進程而已。從技術本質上來說,Docker基於Linux Namespace技術,但又不只僅是Namespace那麼簡單,不然的話LXC一樣能夠火起來。
Docker提供了不少新工具/概念,如沙箱環境(sandbox environment),命令行工具(command-line tool),鏡像管理(image management)等等。這些額外的工具讓Docker變得易於使用,在衆多Container技術中脫穎而出。
Docker的出現改變了軟件開發和軟件運營的方式,從架構到開發和測試,再到交付以及上線,依靠Docker,這一系列的流程都獲得了簡化,大大加快了工程上線的開發速度,下降了企業的成本。
同時,Docker有了本身的生態圈,衆多公司,包括Google, Microsoft, Intel, IBM, VMware這些巨頭,都聚在一塊兒推進Docker發展。Google推出了基於Docker的雲服務,Microsoft也推出了基於Windows的Docker支持,AWS也能夠託管Docker鏡像。Docker逐漸發展爲虛擬化技術(Virtualization)雲計算(Cloud Computing)中的新寵。網絡

Docker vs Virtualization

Docker並非虛擬化(Virtualization)技術。雖然和虛擬化同樣,提供了隔離(isolation)的能力,可是對比虛擬化技術,docker並無使用硬件虛擬化(hardware virtualization)技術,而僅僅是用戶態的一個進程而已。用戶的應用程序做爲一個Linux的用戶態進程,運行在Docker的容器(container)中。
而作到這些的即是Docker採用的如下八個技術:架構

  • PID namespace:進程的命名空間,不一樣的container內部的進程擁有獨立的PID。工具

  • UTS namespace:主機名命名空間,不一樣的container內部能夠擁有不一樣的主機名。測試

  • MNT namespace:文件系統命名空間,不一樣的container內部能夠擁有不一樣的文件系統。雲計算

  • IPC namespace:進程間通訊命名空間,不一樣的container內部能夠擁有不一樣的進程間通訊空間,如各自獨立的共享內存。spa

  • NET namespace:網絡命名空間,不一樣的container內部能夠有不一樣的網絡鏈接訪問方式。命令行

  • USR namespace:用戶命名空間,不一樣的container內部能夠有不一樣的用戶。code

  • chroot():不一樣的container能夠有不一樣的root目錄。

  • cgroups:不一樣的container能夠有各自受保護的資源。

上面的八個技術構成了Docker的運行時(runtime)所需的技術。

爲何使用Docker

簡單來講,可讓軟件開發流程變得快速簡單,尤爲是在環境的配置上面。
相信你們都有這樣的噩夢,每次要開發新軟件或者換環境的時候,須要安裝配置一大堆的依賴。雖然有yum或者apt這類的包管理軟件幫忙,可是若是出現的包衝突,或者找不到包的狀況,或者須要源碼編譯卻缺失依賴,這種環境部署簡直就是噩夢。
Docker就是解決上述噩夢的利器。
此外,Docker也是解決跨平臺部署的利器。你能夠在你的MacOS, Windows, Linux上安裝Docker,而後下載你所須要的Docker鏡像(image)進行程序開發。當你的程序須要發佈的時候,僅僅須要將你的Docker鏡像打包發佈,再也不須要搭建新環境。

Hello World!

也許看完上述介紹你們仍是雲裏霧裏,不要緊,既然叫實戰指南,那麼必然有實戰部分,咱們從最簡單的Hello World程序開始。
首先下載Docker安裝環境:https://docs.docker.com/engin...
裏面有Linux版的,Windows版的,MacOS版的,Cloud版的,選擇適合你的就好。
當安裝好以後,在命令行中運行:

docker run dockerinaction/hello_world

若是失敗,那麼須要使用root權限來操做,Windows的話請採用管理員(administrator)權限。
一切就緒後,你應該能夠看到一句:

hello world

至此,第一個Hello World程序成功運行。
中間發生了什麼?這個命令完成了下面一系列的操做:

  1. Docker檢查是否有所需的鏡像,若是沒有,那麼嘗試去Docker Hub下載所需鏡像。

  2. 安裝所需鏡像。

  3. Docker建立一個容器,並加載鏡像,運行鏡像中的Hello World程序。

至於這個程序是什麼,答案很簡單:

echo "hello world"

Summary

咱們簡單的介紹了Docker的前世此生,採用的技術,以及使用的場景,最後用一個簡單的Hello World程序來進行實戰。
後續咱們將介紹,若是利用Docker運行你本身的程序。

(本文出自csprojectedu.com,轉載請註明出處)

相關文章
相關標籤/搜索