docker學習1

Docker 項目的目標是實現輕量級的操做系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不須要去關心容器的管理,使得操做更爲簡便。用戶操做 Docker 的容器就像操做一個快速輕量級的虛擬機同樣簡單docker

docker和虛擬機的區別:安全

虛擬機:每臺虛擬機包括應用,必要的二進制和庫,以及一個完整的用戶操做子系統服務器

docker:經過容器技術和咱們的宿主機共享硬件資源和操做系統,實現資源的動態分配。Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。而 Linux 容器是 Linux 發展出的另外一種虛擬化技術,簡單來說, Linux 容器不是模擬一個完整的操做系統,而是對進程進行隔離,至關因而在正常進程的外面套了一個保護層。對於容器裏面的進程來講,它接觸到的各類資源都是虛擬的,從而實現與底層系統的隔離。Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行同樣。有了 Docker ,就不用擔憂環境問題。網絡

docker的三個概念:操作系統

Image(鏡像),Container(容器),Repository(倉庫) 鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所,可見鏡像更是 Docker 的核心。3d

鏡像:Docker 鏡像能夠看做是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像中不包含任何的動態數據,其內容在構建以後不會被改變。鏡像(Image)就是一堆只讀層(read-only layer)的統一視角,也許這個定義有些難以理解,下面的這張圖可以幫助讀者理解鏡像的定義:

這多是最爲詳細的Docker入門吐血總結指針

 

 

從左邊咱們看到了多個只讀層,它們重疊在一塊兒。除了最下面一層,其餘層都會有一個指針指向下一層。這些層是 Docker 內部的實現細節,而且可以在主機的文件系統上訪問到。統一文件系統(Union File System)技術可以將不一樣的層整合成一個文件系統,爲這些層提供了一個統一的視角。這樣就隱藏了多層的存在,在用戶的角度看來,只存在一個文件系統。咱們能夠在圖片的右邊看到這個視角的形式。鏡像能夠用來建立 Docker 容器,一個鏡像能夠建立不少容器。Docker 提供了一個很簡單的機制來建立鏡像或者更新現有的鏡像,用戶甚至能夠直接從其餘人那裏下載一個已經作好的鏡像來直接使用。blog

倉庫:接口

倉庫(Repository)是集中存放鏡像文件的場所。有時候會把倉庫和倉庫註冊服務器(Registry)混爲一談,並不嚴格區分。實際上,倉庫註冊服務器上每每存放着多個倉庫,每一個倉庫中又包含了多個鏡像,每一個鏡像有不一樣的標籤(tag)。倉庫分爲公開倉庫(Public)和私有倉庫(Private)兩種形式。最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括 時速雲 、網易雲 等,能夠提供大陸用戶更穩定快速的訪問。固然,用戶也能夠在本地網絡內建立一個私有倉庫。當用戶建立了本身的鏡像以後就可使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另一臺機器上使用這個鏡像時候,只須要從倉庫上 pull 下來就能夠了。Docker 倉庫的概念跟 Git 相似,註冊服務器能夠理解爲 GitHub 這樣的託管服務。進程

容器:Docker 利用容器(Container)來運行應用。容器是從鏡像建立的運行實例。它能夠被啓動、開始、中止、刪除。每一個容器都是相互隔離的、保證安全的平臺。能夠把容器看作是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。

容器的定義和鏡像幾乎如出一轍,也是一堆層的統一視角,惟一區別在於容器的最上面那一層是可讀可寫的。容器 = 鏡像 + 讀寫層

container ufs

一個運行態容器被定義爲一個可讀寫的統一文件系統加上隔離的進程空間和包含其中的進程。下面這張圖片展現了一個運行中的容器。

container running

正是文件系統隔離技術使得Docker成爲了一個很是有潛力的虛擬化技術。一個容器中的進程可能會對文件進行修改、刪除、建立,這些改變都將做用於可讀寫層。

相關文章
相關標籤/搜索