原文:towardsdatascience.com/learn-enoug…python
做者:Jeff Haledocker
翻譯:付新圓ubuntu
容器對於提升軟件開發和數據科學中的安全性、可重複性和可伸縮性很是有用。容器的崛起是當今科技領域最重要的趨勢之一。瀏覽器
Docker是一個用於在容器中開發、部署和運行應用程序的平臺。Docker本質上是容器化的同義詞。對於有抱負的軟件開發人員或數據科學家來講,Docker就是他們的將來。安全
若是您還不適應最新技術,請不要擔憂——本文將幫助您理解Docker的概念,瞭解Docker的過程能夠想象成是製做披薩的過程。服務器
在本系列有五篇文章,以後的四篇文章咱們將會講解Docker術語、Dockerfiles、Docker鏡像、Docker命令和數據存儲。閱讀完這個系列(再加上一點練習),你將會了解不少Docker發揮的做用😃!機器學習
首先,闡明一下Docker的類比。學習
谷歌中對類比的第二個定義是:ui
象徵物被認爲是其餘事物的表明或象徵的事物,尤指抽象的事物。命令行
類比能夠幫助咱們理解新的事物。例如,物理容器的類比能夠幫助咱們快速掌握虛擬容器的本質。
圖爲物理容器
如下是塑料容器對照Docker容器的類比:
與虛擬Docker容器不一樣,網購的塑料容器須要花費錢,而且商家也不會提供商品副本。
Docker容器的第二種類比是能夠將其視爲一個有生命的的實例。實例是以某種形式存在的東西,不只僅只是代碼,正是這些代碼賦予了Docker容器生命。像其餘生物同樣,實例最終將死亡-這意味着容器將關閉。
Docker容器是Docker鏡像的生命表現。
除了容器類比和實例類比,您還能夠將Docker容器視爲軟件程序。畢竟,Docker容器確實是軟件,在最基本的層次上,容器是一組操縱其餘位的指令。
圖爲容器是代碼
當Docker容器運行時,一般會有程序在運行。容器中的程序執行操做,應用程序也對應執行相關操做。
例如,Docker容器中的代碼已經實時將網頁上讀取的內容發送了您,或者可能會將您的語音命令帶到Amazon Alexa,並將其解碼爲另外一個程序並在不一樣容器中使用的指令。
使用Docker,您能夠在主機上同時運行多個容器,和其餘軟件程序同樣,Docker容器能夠運行、檢查、中止和刪除。
虛擬機是Docker容器的前身,它能夠隔離應用程序及其依賴項。可是,Docker容器優於虛擬機,由於它們佔用的資源更少,很是便捷,而且啓動速度更快。
在本文中,術語「 鏡像 」的含義沒法很好地映射到物理鏡像。
Docker鏡像更像是藍圖、餅乾切割機或模具。鏡像是不可變的主模板,用於抽取徹底相同的容器。
鏡像包含應用程序運行所需的Dockerfile、庫和代碼,全部這些都是捆綁在一塊兒的。
Dockerfile 是一個文件,其中包含Docker應如何構建圖像的說明。
Dockerfile引用用於構建初始鏡像層的基礎鏡像。流行的官方基礎鏡像包括python,Ubuntu和alpine。
而後,根據Dockerfile中的說明,能夠將其餘層堆疊在基本鏡像層的頂部。例如,用於機器學習應用程序的Dockerfile能夠告訴Docker在中間層添加NumPy,Pandas和Scikit-learn。
最後,根據Dockerfile代碼,在其餘層之上堆疊了一個可寫的薄層。(薄層的尺寸很小,在這裏薄是一種類比)
在本系列的後續文章中,將會更深刻地探討Dockerfiles。
Docker鏡像加上命令docker run image_name
,可從鏡像建立並啓動容器。
若是但願其餘人可以從本身的鏡像中建立容器,則能夠將鏡像發送到容器註冊表。Docker Hub是最大的註冊表,也是默認的註冊表。
圖爲景觀類比
將食譜和食材想像成一體的披薩製做套件。這是Docker鏡像。
配方(Dockerfile)告訴咱們咱們要作什麼。計劃以下:
圖爲烤箱
docker run image_name
命令就像烤箱的旋鈕同樣——它能夠建立並啓動容器。就像製做披薩同樣,在Docker容器中製做應用程序須要一些工做,但最終您會擁的是很是有價值的。
以上就是Docker概念的內容。在本系列的第2部分,將闡明在Docker生態系統中經常使用的一些術語。但願本文對您瞭解Docker有所幫助,同時也但願您看到類比在理解新技術中的價值。