Docker-第1部分:什麼是Docker?

image

原文: https://towardsdatascience.com/learn-enough-docker-to-be-useful-b7ba70caeb4b
做者:Jeff Hale
翻譯:付新圓

容器對於提升軟件開發和數據科學中的安全性、可重複性和可伸縮性很是有用。容器的崛起是當今科技領域最重要的趨勢之一。python

Docker是一個用於在容器中開發、部署和運行應用程序的平臺。Docker本質上是容器化的同義詞。對於有抱負的軟件開發人員或數據科學家來講,Doc​​ker就是他們的將來。docker

image

若是您還不適應最新技術,請不要擔憂——本文將幫助您理解Docker的概念,瞭解Docker的過程能夠想象成是製做披薩的過程。ubuntu

在本系列有五篇文章,以後的四篇文章咱們將會講解Docker術語、Dockerfiles、Docker鏡像、Docker命令和數據存儲。閱讀完這個系列(再加上一點練習),你將會了解不少Docker發揮的做用😃!瀏覽器

Docker的類比

首先,闡明一下Docker的類比。安全

谷歌中對類比的第二個定義是:服務器

象徵物被認爲是其餘事物的表明或象徵的事物,尤指抽象的事物。

類比能夠幫助咱們理解新的事物。例如,物理容器的類比能夠幫助咱們快速掌握虛擬容器的本質。機器學習

image

圖爲物理容器學習

容器

如下是塑料容器對照Docker容器的類比:ui

  1. 容納東西——東西要麼在容器內,要麼在容器外;
  2. 便攜式——可在本地計算機、遠程計算機或雲提供商的服務器(例如AWS)上使用。就像盒子同樣,你能夠隨時移動。
  3. 具備清晰的訪問接口——物理容器有一個蓋子,用於打開和放入物品以及取出物品。一樣,Docker容器具備多種與外界交互的機制。它具備能夠經過打開瀏覽器進行交互的端口,您能夠經過命令行將其配置爲與數據交互。
  4. 能夠從遠程位置獲取——當您須要用到塑料容器時,您能夠網購一個,這些塑料容器是商家從製造商那裏購買的,這些製造商經過一個模具就能將數千個塑料容器衝壓出來。對於Docker容器,異地註冊表會爲容器保存一個像模具的鏡像。而後,當您須要一個容器時,就能夠從圖像中製做一個。

與虛擬Docker容器不一樣,網購的塑料容器須要花費錢,而且商家也不會提供商品副本。spa

實例

Docker容器的第二種類比是能夠將其視爲一個有生命的的實例。實例是以某種形式存在的東西,不只僅只是代碼,正是這些代碼賦予了Docker容器生命。像其餘生物同樣,實例最終將死亡-這意味着容器將關閉。

Docker容器是Docker鏡像的生命表現。

軟件程序

除了容器類比和實例類比,您還能夠將Docker容器視爲軟件程序。畢竟,Docker容器確實是軟件,在最基本的層次上,容器是一組操縱其餘位的指令。

image

圖爲容器是代碼

當Docker容器運行時,一般會有程序在運行。容器中的程序執行操做,應用程序也對應執行相關操做。

例如,Docker容器中的代碼已經實時將網頁上讀取的內容發送了您,或者可能會將您的語音命令帶到Amazon Alexa,並將其解碼爲另外一個程序並在不一樣容器中使用的指令。

使用Docker,您能夠在主機上同時運行多個容器,和其餘軟件程序同樣,Docker容器能夠運行、檢查、中止和刪除。

概念

虛擬機

虛擬機是Docker容器的前身,它能夠隔離應用程序及其依賴項。可是,Docker容器優於虛擬機,由於它們佔用的資源更少,很是便捷,而且啓動速度更快。

Docker鏡像

在本文中,術語「 鏡像 」的含義沒法很好地映射到物理鏡像。

image

Docker鏡像更像是藍圖、餅乾切割機或模具。鏡像是不可變的主模板,用於抽取徹底相同的容器。

image

鏡像包含應用程序運行所需的Dockerfile、庫和代碼,全部這些都是捆綁在一塊兒的。

Dockerfile

Dockerfile 是一個文件,其中包含Docker應如何構建圖像的說明。

Dockerfile引用用於構建初始鏡像層的基礎鏡像。流行的官方基礎鏡像包括pythonUbuntualpine

而後,根據Dockerfile中的說明,能夠將其餘層堆疊在基本鏡像層的頂部。例如,用於機器學習應用程序的Dockerfile能夠告訴Docker在中間層添加NumPy,Pandas和Scikit-learn。

最後,根據Dockerfile代碼,在其餘層之上堆疊了一個可寫的薄層。(薄層的尺寸很小,在這裏薄是一種類比)

在本系列的後續文章中,將會更深刻地探討Dockerfiles。

Docker容器

Docker鏡像加上命令docker run image_name,可從鏡像建立並啓動容器。

容器註冊表

若是但願其餘人可以從本身的鏡像中建立容器,則能夠將鏡像發送到容器註冊表。Docker Hub是最大的註冊表,也是默認的註冊表。

用Docker烹飪

image

圖爲景觀類比

  • 配方就像Dockerfile同樣。它告訴您如何實現最終目標。
  • 成分是層。這個比薩餅有皮、醬汁和奶酪。

將食譜和食材想像成一體的披薩製做套件。這是Docker鏡像。

配方(Dockerfile)告訴咱們咱們要作什麼。計劃以下:

  • 外殼是預成型且不可變的,就像基本的Ubuntu父鏡像同樣。它是最底層的,是首先被構建的。
  • 而後添加一些奶酪。將第二層添加到比薩餅就像安裝一個外部庫——例如NumPy。
  • 而後撒一些芝士。芝士就像運行應用程序的文件中編寫的代碼。

image

圖爲烤箱

  • 烤披薩的烤箱就像Docker平臺同樣。搬進烤箱並將烤箱安裝到了本身的房子裏,就能夠製做東西了。一樣,在計算機上安裝了Docker,就能夠製做容器了。
  • 經過旋轉旋鈕能夠啓動烤箱。該docker run image_name命令就像烤箱的旋鈕同樣——它能夠建立並啓動容器。
  • 煮熟的比薩就像一個Docker容器。
  • 吃披薩就像使用您的應用程序同樣。

就像製做披薩同樣,在Docker容器中製做應用程序須要一些工做,但最終您會擁的是很是有價值的。

總結

以上就是Docker概念的內容。在本系列的第2部分,將闡明在Docker生態系統中經常使用的一些術語。但願本文對您瞭解Docker有所幫助,同時也但願您看到類比在理解新技術中的價值。

相關文章
相關標籤/搜索