docker

1.docker? ? 鏡像? 容器

2.docker與虛擬機

3.docker簡單操作


1.docker? ? 鏡像? 容器

1.1 docker

? ? ? Docker是一個基于輕量級虛擬化技術的容器癌瘾,整個項目基于Go語言開發(fā)川无,并采用了Apache 2.0協(xié)議。Docker可以將我們的應用程序打包封裝到一個容器中,該容器包含了應用程序的代碼县匠、運行環(huán)境、依賴庫证膨、配置文件等必需的資源夺脾,通過容器就可以實現(xiàn)方便快速并且與平臺解耦的自動化部署方式,無論你部署時的環(huán)境如何吊奢,容器中的應用程序都會運行在同一種環(huán)境下盖彭。

舉例:

? ? ? ? 我寫了一個5g基站通訊系統(tǒng),該系統(tǒng)的技術棧非常廣,需要依賴于各種開源庫和中間件召边。如果按照純手動的部署方式铺呵,我需要安裝各種開源軟件,還需要寫好每個開源軟件的配置文件隧熙。如果只是部署一次片挂,這點時間開銷還是可以接受的,但如果我每隔幾天就需要換個服務器去部署這個程序贞盯,那么這些繁瑣的重復工作無疑是會令人發(fā)狂的音念。這時候,Docker的用處就派上場了邻悬,我只需要根據(jù)應用程序的部署步驟編寫一份Dockerfile文件(將安裝症昏、配置等操作交由Docker自動化處理),然后構建并發(fā)布他的鏡像父丰,這樣肝谭,不管在什么機器上,我都只需要拉取他需要的鏡像蛾扇,然后就可以直接部署運行了攘烛,這正是Docker的魅力所在。

1.2? 鏡像

鏡像是Docker中的一個重要概念:

? ? ? 它類似于虛擬機中使用到的鏡像镀首,由于任何應用程序都需要有它自己的運行環(huán)境坟漱,Image就是用來提供所需運行環(huán)境的一個模板。

? ? ? Docker你可以與其他人共享你的Image更哄,但是提倡每個Image都遵循單一職責原則芋齿,也就是只做好一件事。

1.3? 容器

? ? ? Container是Docker提供的一個抽象層成翩,它就像一個輕量級的沙盒觅捆,其中包含了一個極簡的Linux系統(tǒng)環(huán)境與運行在其中的應用程序。

? ? Container是Image的運行實例(Image本身是只讀的麻敌,Container啟動時栅炒,Docker會在Image的上層創(chuàng)建一個可寫層,任何在Container中的修改都不會影響到Image术羔,如果想要在Image保存Container中的修改赢赊,Docker采用了基于Container生成新的Image層的策略),Docker引擎利用Container來操作并隔離每個應用(也就是說级历,每個容器中的應用都是互相獨立的)释移。

? ? ? ? 我們可以從從Docker與Container的英文單詞原意中就可以體會出Docker的思想。

? ? ? ? Container可以釋義為集裝箱鱼喉,集裝箱是一個可以便于機械設備裝卸的封裝貨物的通用標準規(guī)格秀鞭,它的發(fā)明簡化了物流運輸?shù)臋C械化過程趋观,使其建立起了一套標準化的物流運輸體系。

? ? ? ? Docker的意思為碼頭工人锋边,可以認為皱坛,Docker就像是在碼頭上辛勤工作的工人,把應用打包成一個個具有某種標準化規(guī)格的"集裝箱"(其實這里指出的集裝箱對應的是Image豆巨,在Docker中Container更像是一個運行中的沙盒)剩辟,當貨物運輸?shù)侥康牡睾螅a頭工人們(Docker)就可以把集裝箱拆開取出其中的貨物(基于Image來創(chuàng)建Container并運行)往扔。這種標準化與隔離性可以很方便地組合使用多個Image來構建你的應用環(huán)境贩猎。

2. docker 與虛擬機

? ? ? ? 我們知道Docker是基于輕量級虛擬化技術的,所以它與我們平常使用的虛擬機是不一樣的萍膛。

虛擬機技術可以分成以下兩類:

系統(tǒng)虛擬機:通過軟件對計算機系統(tǒng)的模擬來提供一個真實計算機的替代品吭服。它是物理硬件的抽象并提供了運行完整操作系統(tǒng)所需的功能。虛擬機通過物理機器來管理和共享硬件蝗罗,這樣實現(xiàn)了多個虛擬機環(huán)境彼此之間的隔離艇棕,一臺機器上可以運行多個虛擬機,每個虛擬機包括一個操作系統(tǒng)的完整副本串塑。在系統(tǒng)虛擬機中沼琉,所運行的所有軟件或操作都只會影響到該虛擬機的環(huán)境。我們經(jīng)常使用的VMWare就是系統(tǒng)虛擬機的實現(xiàn)桩匪。

程序虛擬機:允許程序獨立運行在平臺之外打瘪。比較典型的例子就是JVM,Java通過JVM這一抽象層使得Java程序與操作系統(tǒng)和硬件平臺解耦(因為每個Java程序都是運行在JVM中的)傻昙,因此實現(xiàn)了所謂的compile once, run everywhere闺骚。

? ? ? ? Docker所用到的技術與上述兩種都不相同,它使用了更輕量級的虛擬化技術妆档,多個Container共享了同一個操作系統(tǒng)內核葛碧,并且就像運行在本地上一樣。Container技術相對于虛擬機來說过吻,只是一個應用程序層的抽象,它將代碼與依賴關系打包到一起蔗衡,多個Container可以在同一臺機器上運行(意味著一個虛擬機上也可以運行多個Container)纤虽,并與其它Container共享操作系統(tǒng)內核,每一個Container都在用戶空間中作為一個獨立的進程運行绞惦,這些特性都證明了Container要比虛擬機更加靈活與輕量(一般都是結合虛擬機與Docker一起使用)逼纸。

圖片發(fā)自簡書App

? ? ? ? Container技術其實并不是個新鮮事物,最早可以追溯到UNIX中的chroot(在1979年的V7 Unix中引入)济蝉,它可以改變當前正在運行的進程及其子目錄的根目錄杰刽,在這種修改過的環(huán)境下運行的程序不能在指定的目錄樹之外訪問文件菠发,從而限制用戶的活動范圍,為進程提供了隔離空間贺嫂。之后各種Unix版本涌現(xiàn)出很多Container技術滓鸠,在2006年,Google提出了"Process Containers"期望在Linux內核中實現(xiàn)進程資源隔離的相關特性第喳,由于Container在Linux內核中的定義過于寬泛混亂糜俗,后來該項目改名為CGroups(Control Groups),實現(xiàn)了對進程的資源限制曲饱。2008年悠抹,LXC(Linux Containers)發(fā)布,它是一種在操作系統(tǒng)層級上的虛擬化方法扩淀,用于在Linux系統(tǒng)上通過共享一個內核來運行多個互相隔離的程序(Container)楔敌。LXC正是結合了Linux內核中的CGroups和對分離的名稱空間的支持來為應用程序提供了一個隔離的環(huán)境。而Docker也是基于LXC實現(xiàn)的(Docker的前身是dotClound公司中的內部項目驻谆,它是一家提供PaaS服務的公司卵凑。),并作出了許多改進旺韭。

3.docker的簡單操作

1.docker ps 顯示當前正在運行的容器

2.docker ps -a 顯示所有狀態(tài)的容器

3.docker ps -n 3 顯示最后被創(chuàng)建的n個容器(注意:不限狀態(tài))

4.docker ps -q 只顯示容器ID

5.docker ps -s 顯示容器文件大小

6.docker –version 查看當前docker版本

7.docker run hello-word 測試docker安裝是否有效

8.docker image ls 顯示當前計算機的鏡像

9.docker container ls 顯示正在運行的容器

10.docker container ls –all 顯示所有容器

11.docker build -t image_name . 創(chuàng)建一個docker鏡像氛谜,使用-t表示鏡像的名稱

12.sudo service docker start 啟動docker服務

13.sudo service docker stop 關閉docker服務

14.sudo service docker restart 重啟docker服務

15.docker container stop ID 結束這個進程

16.docker build -t image_name . 創(chuàng)建一個docker鏡像

17.docker container rm ID 刪除容器

18.docker image rm ID 刪除鏡像

19.docker login 登錄docker

20.docker tag image(鏡像名稱) username(docker注冊的用戶名)/respository(倉庫名):tag(tag名)

21.docker push username/resposity:tag 上傳鏡像

22.docker run -p 4000:80 username/respository:tag 可以在任何計算機上運行


? ? ? ? Docker提供了非常強大的自動化部署方式與靈活性,對多個應用程序之間做到了解耦区端,提供了開發(fā)上的敏捷性值漫、可控性以及可移植性。同時织盼,Docker也在不斷地幫助越來越多的企業(yè)實現(xiàn)了向云端遷移杨何、向微服務轉型以及向DevOps模式的實踐。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末沥邻,一起剝皮案震驚了整個濱河市危虱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唐全,老刑警劉巖埃跷,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邮利,居然都是意外死亡弥雹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門延届,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪勿,“玉大人,你說我怎么就攤上這事方庭〔藜” “怎么了酱固?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長头朱。 經(jīng)常有香客問我运悲,道長,這世上最難降的妖魔是什么髓窜? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任扇苞,我火速辦了婚禮,結果婚禮上寄纵,老公的妹妹穿的比我還像新娘鳖敷。我一直安慰自己,他們只是感情好程拭,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布定踱。 她就那樣靜靜地躺著,像睡著了一般恃鞋。 火紅的嫁衣襯著肌膚如雪崖媚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天恤浪,我揣著相機與錄音畅哑,去河邊找鬼。 笑死水由,一個胖子當著我的面吹牛荠呐,可吹牛的內容都是我干的。 我是一名探鬼主播砂客,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泥张,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鞠值?” 一聲冷哼從身側響起媚创,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彤恶,沒想到半個月后钞钙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡声离,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年歇竟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抵恋。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宝磨,靈堂內的尸體忽然破棺而出弧关,到底是詐尸還是另有隱情盅安,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布世囊,位于F島的核電站别瞭,受9級特大地震影響,放射性物質發(fā)生泄漏株憾。R本人自食惡果不足惜蝙寨,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗤瞎。 院中可真熱鬧墙歪,春花似錦、人聲如沸贝奇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掉瞳。三九已至毕源,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陕习,已是汗流浹背霎褐。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留该镣,地道東北人冻璃。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像拌牲,于是被迫代替她去往敵國和親俱饿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353