docker容器技術指的是Docker是一個由GO語言寫的程序運行的容器,實現了一種應用程序級別的隔離;docker是為開發者和系統管理員設計的,用來發布和運行分布式應用程序的一個開放性平臺。
本教程操作環境:linux7.3系統、docker19.03版、Dell G3電腦。
什么是docker容器技術
docker容器技術指Docker是一個由GO語言寫的程序運行的“容器”(Linux containers, LXCs)Docker則實現了一種應用程序級別的隔離,它改變我們基本的開發、操作單元,由直接操作虛擬主機(VM),轉換到操作程序運行的“容器”上來。
Docker是為開發者和系統管理員設計的,用來發布和運行分布式應用程序的一個開放性平臺。由兩部分組成:Docker Engine: 一個便攜式、輕量級的運行環境和包管理器。
(注* 單OS vs 單線程)Docker Hub: 為創建自動化工作流和分享應用創建的云服務組成。(注* 云端鏡像/包管理 vs npm包管理,是不是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式發布到 2014年6月Docker 1.0 正式發布,經歷了15個月。 雖然發展歷程很短,但Docker正在有越來越流行的趨勢。其實Container技術并非Docker的創新,HeroKu, NodeJitsu 等云服務商都采用了類似這種輕量級的虛擬化技術,但Docker是第一個將這這種Container技術大規模開源并被社區廣泛接受的。
容器技術擴展
?在計算機的世界中,容器擁有一段漫長且傳奇的歷史。容器與管理程序虛擬化hypervisor virtualization HV )有所不同,管理程序虛擬化通過中間層將一臺或者多臺獨立的機器虛擬運行與物理硬件之上,而容器則是直接運行在操作系統內核之上的用戶空間。因此,容器虛擬化也被稱為“操作系統級虛擬化”,容器技術可以讓多個獨立的用戶空間運行在同一臺宿主機上。
由于“客居”于操作系統,容器只能運行與底層宿主機相同或者相似的操作系統,這看起來并不是非常靈活。例如:可以在 Ubuntu 服務中運行 Redhat Enterprise Linux ,但無法再Ubuntu 服務器上運行 Microsoft Windows 。
相對于徹底隔離的管理程序虛擬化,容器被認為是不安全的。而反對這一觀點的人則認為,由于虛擬容器所虛擬的是一個完整的操作系統,這無疑增大了攻擊范圍,而且還要考慮管理程序層潛在的暴露風險。
盡管有諸多局限性,容器還是被廣泛部署于各種各樣的應用場合。在超大規模的多租戶服務部署、輕量級沙盒以及對安全要求不太高的隔離環境中,容器技術非常流行。最常見的一個例子就是“權限隔離監牢”( chroot jail ),它創建一個隔離的目錄環境來運行進程。如果權限隔離監牢正在運行的進程被入侵者攻破,入侵者便會發現自己“身陷囹圄”,因為權限不足被困在容器所創建的目錄中,無法對宿主機進一步破壞。
最新的容器技術引入了OpenVZ 、 Solaris Zones 以及 Linux 容器( LXC )。使用這些新技術,容器不在僅僅是一個 單純的運行環境。在自己的權限類內,容器更像是一個完整的宿主機。對 Docker 來說,它得益于現代 Linux 特性,如控件組( control group )、命名空間(namespace )技術,容器和宿主機之間的隔離更加徹底,容器有獨立的網絡和存儲棧,還擁有自己的資源管理能力,使得同一臺宿主機中的多個容器可以友好的共存。
容器被認為是精益技術,因為容器需要的開銷有限。和傳統虛擬化以及半虛擬化相比,容器不需要模擬層( emulation layer )和管理層( hypervisor layer ),而是使用操作系統的系統調用接口。這降低了運行單個容器所需的開銷,也使得宿主機中可以運行更多的容器。
盡管有著光輝的歷史,容器仍未得到廣泛的認可。一個很重要的原因就是容器技術的復雜性:容器本身就比較復雜,不易安裝,管理和自動化也很困難。而Docker 就是為了改變這一切而生的。
推薦學習:《docker視頻教程》