Docker學習

I Docker

來自於百度百科:Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

這也太拗口了吧,什麼是容器?什麼是引擎?其實弄懂虛擬化、沙箱機制就大概有頭緒了。

我是學安全的,從OS就開始接觸虛擬化和沙箱機制。沙箱就是一個限制應用程序對系統資源的訪問的運行環境,提供的環境相對於每一個運行的程序都是獨立的,JVM、EVM(以太坊的虛擬機)都是沙箱機制。虛擬化相對而言抽象一些,OS老師說過“將資源虛擬爲多個邏輯上的獨立資源”,虛擬專用網、VM都是虛擬化的。兩者的關係在於:沙箱機制的實現離不開資源的虛擬化。

而Docker就是一種比較新穎的虛擬化技術,相比較於虛擬機,它由更多優勢,使用別人的表:

特性 容器 虛擬機
啓動 秒級 分鐘級
硬盤使用 一般爲MB 一般爲GB
性能 接近原生 弱於
系統支持量 單機支持上千個容器 一般是幾十個

接下來就是容器,這個就很少接觸了,唯一有印象的就是STL的container,STL是這麼解釋的“容器(container)用於存放數據的類模板。可變長數組、鏈表、平衡二叉樹等數據結構在 STL 中都被實現爲容器。”,Docker的容器也很類似,都是一套模板,STL的容器模板裏面存放的是變量和方法,而Docker的容器包含了完整的運行時環境:除了應用程序本身之外,這個應用所需的全部依賴、類庫、其他二進制文件、配置文件等,都統一被打入了一個稱爲容器鏡像的包中。通過將應用程序本身,和其依賴容器化,操作系統發行版本和其他基礎環境造成的差異,都被抽象掉了。

總結:Docker 將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了 Docker ,就不用擔心環境問題。

II 三大概念

有了上面基礎,理解三個概念就很簡單了

  • Image(鏡像)
  • Container(容器)
  • Repository(倉庫)

鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所,可見鏡像更是 Docker 的核心。(以下摘自https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217

鏡像(Image)
鏡像,從認識上簡單的來說,就是面向對象中的類,相當於一個模板。從本質上來說,鏡像相當於一個文件系統。Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

容器(Container)
容器,從認識上來說,就是類創建的實例,就是依據鏡像這個模板創建出來的實體。容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的命名空間。因此容器可以擁有自己的root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶ID 空間。容器內的進程是運行在一個隔離的環境裏,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。

倉庫(Repository)
倉庫,從認識上來說,就好像軟件包上傳下載站,有各種軟件的不同版本被上傳供用戶下載。鏡像構建完成後,可以很容易的在當前宿主機上運行,但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。
 

III 安裝

因爲我是Win10,所以就簡單說一下Win10安裝,這個之前浪費了一晚時間。

1、開啓 Hyper-V:單擊開始-》控制面板-》程序和功能-》啓用或關閉Windows功能-》選中Hyper-V開啓

2、下載 Toolbox並安裝(https://www.docker.com/get-docker

3、鏡像加速,安裝完之後,雙擊運行,進入設置

進行修改

4、運行:

 

 

發佈了89 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章