五分鐘技術趣談 | 淺談Docker
Part 01 Docker概述
Docker是一個開源的應用容器引擎,基于Go語言并遵從 Apache2.0協議開源。Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。
Docker的架構如下:
Part 02 特性
? 文件系統隔離
每個進程容器運行在一個完全獨立的根文件系統里。
? 資源隔離
系統資源,像CPU和內存等可以分配到不同的容器中,使用cgroup。
? 網絡隔離
每個進程容器運行在自己的網路空間,虛擬接口和IP地址。
? 日志記錄
Docker將收集到和記錄的每個進程容器的標準流,用于實時檢索或者批量檢索。
? 變更管理
容器文件系統的變更可以提交到新的鏡像中,并可重復使用以創建更多的容器。無需使用模板或者手動配置。
? 交互式shell
Docker可以分配一個虛擬終端并且關聯到任何容器的標準輸出上,例如運行一個一次性交互shell。
Part 03 Docker與虛擬機的區別
Docker可以讓一個應用在任何操作系統中非常方便的運行。而以前我們接觸的虛擬機,也能在一個操作系統中,運行另外一個操作系統,保護系統中的任何應用。
兩者有什么差異呢?
虛擬機(virtual machine)是在操作系統中模擬硬件設備,然后運行另一個操作系統,比如在 Windows 系統里面運行 Ubuntu 系統,這樣就可以運行任意的Ubuntu應用了。
Docker僅僅是封裝函數庫,并沒有模擬完整的操作系統,如圖:
對比來看:
圖片
Part 04 Docker部署java web應用
4.1 下載系統鏡像(以CentOS為例)
使用命令:docker images查看下載情況
4.2 根據該鏡像創建容器
查看已經運行的容器列表命令:docker ps
查看所有容器,然后使用容器啟動命令,運行剛才創建的centos容器:docker start stupefied_perlman
4.3 在容器中添加相應依賴
容器創建好以后,需要進入到容器中添加相關依賴,進入容器的命令如下:
4.4 將已經部署了環境依賴的容器提交為新鏡像
4.5 基于新鏡像運行javaweb容器