您好,登錄后才能下訂單哦!
這篇文章主要介紹了docker是什么意思,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
docker簡介
Docker 提供了一個可以運行你的應用程序的封套(envelope),或者說容器。它原本是 dotCloud 啟動的一個業余項目,并在前些時候開源了。它吸引了大量的關注和討論,導致 dotCloud 把它重命名到 Docker Inc。它最初是用 Go 語言編寫的,它就相當于是加在 LXC(LinuX Containers,linux 容器)上的管道,允許開發者在更高層次的概念上工作。
Docker 擴展了 Linux 容器(Linux Containers),或著說 LXC,通過一個高層次的 API 為進程單獨提供了一個輕量級的虛擬環境。Docker 利用了 LXC, cgroups 和 Linux 自己的內核。和傳統的虛擬機不同的是,一個 Docker 容器并不包含一個單獨的操作系統,而是基于已有的基礎設施中操作系統提供的功能來運行的。
Docker類似虛擬機的概念,但是與虛擬化技術的不同點在于下面幾點:
1.虛擬化技術依賴物理CPU和內存,是硬件級別的;而docker構建在操作系統上,利用操作系統的containerization技術,所以docker甚至可以在虛擬機上運行。
2.虛擬化系統一般都是指操作系統鏡像,比較復雜,稱為“系統”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。
3.傳統的虛擬化技術使用快照來保存狀態;而docker在保存狀態上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。
4.傳統的虛擬化技術在構建系統的時候較為復雜,需要大量的人力;而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程序開發人員可以通過發布Dockfile來指導系統環境和依賴,這樣對于持續交付十分有利。
5.Dockerfile可以基于已經構建好的容器鏡像,創建新容器。Dockerfile可以通過社區分享和下載,有利于該技術的推廣。
Docker 會像一個可移植的容器引擎那樣工作。它把應用程序及所有程序的依賴環境打包到一個虛擬容器中,這個虛擬容器可以運行在任何一種 Linux 服務器上。這大大地提高了程序運行的靈活性和可移植性,無論需不需要許可、是在公共云還是私密云、是不是裸機環境等等。
Docker也是一個云計算平臺,它利用Linux的LXC、AUFU、Go語言、cgroup實現了資源的獨立,可以很輕松的實現文件、資源、網絡等隔離,其最終的目標是實現類似PaaS平臺的應用隔離。
Docker 由下面這些組成:
1. Docker 服務器守護程序(server daemon),用于管理所有的容器。
2. Docker 命令行客戶端,用于控制服務器守護程序。
3. Docker 鏡像:查找和瀏覽 docker 容器鏡像。
docker特性
文件系統隔離:每個進程容器運行在完全獨立的根文件系統里。
資源隔離:可以使用cgroup為每個進程容器分配不同的系統資源,例如CPU和內存。
網絡隔離:每個進程容器運行在自己的網絡命名空間里,擁有自己的虛擬接口和IP地址。
寫時復制:采用寫時復制方式創建根文件系統,這讓部署變得極其快捷,并且節省內存和硬盤空間。
日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索。
變更管理:容器文件系統的變更可以提交到新的映像中,并可重復使用以創建更多的容器。無需使用模板或手動配置。
交互式Shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互shell。
兩個基礎概念images與container
Container和Image 在Docker的世界里,Image是指一個只讀的層(Layer),這里的層是AUFS里的概念
Docker使用了一種叫AUFS的文件系統,這種文件系統可以讓你一層一層地疊加修改你的文件,最底下的文件系統是只讀的,如果需要修改文件,AUFS會增加一個可寫的層(Layer),這樣有很多好處,例如不同的Container可以共享底層的只讀文件系統(同一個Kernel),使得你可以跑N多個Container而不至于你的硬盤被擠爆了!這個只讀的層就是Image!而如你所看到的,一個可寫的層就是Container。
那Image和Container的區別是什么?很簡單,他們的區別僅僅是一個是只讀的層,一個是可寫的層,你可以使用docker commit 命令,將你的Container變成一個Image,也就是提交你所運行的Container的修改內容,變成一個新的只讀的Image,這非常類似于git commit命令。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“docker是什么意思”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。