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、運行: