英文原文(By Joe McWilliams)/ 譯者:鐵威 / 原載:Docker中文社區
我關注 docker 有一段時間了,最近開始討論在公司使用,因為小夥伴們想使用 LXC ,也就是 docker 背後的那個技術。 以下是我研究 docker 和 LXC 後總結的一些區別。
標準的配置方法
每個 LXC "容器" 之間或許不兼容,但是 docker 採用了一種標準的配置方法使得由不同 docker 創建出的 LXC 能夠完全兼容。
基於應用
LXC 的定位是作為一種虛擬機的替代方案。雖然所有的軟體都可以安裝在由 LXC 或者 docker 管理的容器中,但是 docker 更傾向於在一個容器中運行一個應用。
自動構建
Docker 的容器是根據 dockerfile 構建的,你可以在構建 image 的過程根據需要中運行任何命令和程序。
這意味著你不用調整現有的 image 構建方式,如果你使用 puppet,你可以在生成容器的時候執行 puppet 命令。
版本控制
Docker 實現了類似 git 的容器版本管理方法,並且能夠進行增量更新。
組件復用
可以創建 base image 並將其保存在遠程倉庫 (repository) 中以便復用,其他容器可以在其基礎上進行修改並保存為新的 image。
遠程倉庫
Docker 管理著一個公開的 image 庫方便用戶分享 image,同時公司也可以構造自己私有的 image 庫。
生態系統
因為 docker 越來越流行,有大量的方法能夠將其輕易地集成到開發過程中,比如可以採用統一的方法來構造用於持續集成的環境和開發環境的容器。
目前有不少反對者聲稱 docker 還是一個非常年輕的項目,並不能用於生產環境。但 docker 只是將一些已有的技術進行封裝和組合併增加其業務邏輯,來避免大家直接使用 LXC 需要面對的一些麻煩。我相信如果直接使用 LXC ,會最終做出和 docker 功能類似的工具,然而不會得到已經轉向 docker 的開發者社區的青睞。
下一頁:Docker vs Vagrant