誰是容器中的「戰鬥機」?Docker與Chef、LXC等容器對比

2021-01-10 CSDN技術社區

Docker vs LXC

英文原文(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

相關焦點

  • Docker 容器的網絡
    ": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4
  • docker鏡像及容器命令
    運行容器docker run <容器名>3. 查看容器列表docker ps -a4.後臺運行容器docker run -d <容器名>-d 後臺執行5.暴露容器埠docker run -d -P <容器名>5.1 自定義埠暴露docker run -d -p 2020:80 2021:443 <容器名>
  • docker容器的啟動方式
    使用Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。 二、docker中的基本概念鏡像(Image):  鏡像,從認識上簡單的來說,就是面向對象中的類,相當於一個模板。從本質上來說,鏡像相當於一個文件系統。
  • Docker系列教程02-操作Docker容器
    [root@qll251 ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • 【Docker】系列教程02-操作Docker容器
    ~]# docker run -it ubuntu /bin/bashroot@8b18b6758bb6:/#docker run相當於執行了兩個步驟:將鏡像放入容器中(docker create),然後啟動容器(docker start)。
  • 理解docker鏡像與容器
    docker有兩個重要的概念:鏡像,容器。使用下面命令查看本地鏡像的信息docker images有一個問題:為什麼docker下載的鏡像只有131.3MB,而通常我們在虛擬機中安裝ubuntu的鏡像一般都有3個G多?
  • 如何開始docker - docker架構及創建容器
    docker的組成docker是採用C/S模式,使用遠程API來管理創建docker。容器的創建過程: 鏡像倉庫 ->pull 鏡像到本地 -> 本地鏡像 -> run容器 from 鏡像 -> 創建容器並執行程序->程序退出->容器退出1、dockerd服務端(守護進程),dockerd是docker的守護進程。
  • 雲計算核心技術Docker教程:Docker容器使用
    此時想要進入容器,可以通過以下指令進入:docker attachdocker exec:推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。如果要導出本地某個容器,可以使用 docker export 命令。
  • 用docker命令創建一個容器以及容器的暫停和恢復
    docker命令創建一個容器docker創建容器的命令是create,用法和run類似。例如:docker create --name newnginx nginx:latest,這句命令的意思是使用nginx的鏡像來創建一個名叫newnginx的容器。
  • 通過容器化一個Python Web應用學習Docker容器技術
    $ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES59b607239c3a helloworld
  • 攻擊和審計Docker容器01
    Docker容器鏡像是一個輕量級,獨立的可執行軟體包,包含運行應用程式所需的一切:代碼,運行時,系統工具,系統庫和設置。容器鏡像在運行時成為容器,在Docker容器的情況下- 鏡像在Docker Engine上運行時成為容器。適用於基於Linux和Windows的應用程式,無論基礎架構如何,容器化軟體都將始終運行相同。容器將軟體與其環境隔離開來,並確保它可以統一工作,儘管開發和演示之間存在差異。
  • Docker 添加容器到一個網絡
    通過網絡,在默認情況下為容器提供了完全獨立的環境。在你第一次運行一個容器的時候,你可以將容器添加到一個網絡中。例如,我們希望運行一個容器來運行 PostgreSQL 資料庫,並且傳遞 --net=my_bridge 標記來到你新網絡的連接中,可以運行下面的命令:$ docker run -d --net=my_bridge --name db training/postgres如果你檢查你的
  • Kubernetes決定棄用Docker,到底會影響到誰?
    導讀:Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之後將棄用 Docker 作為容器運行時。那麼這到底是怎麼回事?開發者和企業會受到什麼樣到影響?Docker 源於 Linux Container,可以將一臺機器的資源分成 N 份容器,做到資源的隔離,並將可運行的程序定義為標準的 docker image;Kubernetes 則可以把不同機器的每份容器進行編排、調度,組成分布式系統。
  • CoreOS實踐指南(七):Docker容器管理服務
    本文將主要介紹在具體的場景下,如何在CoreOS中恰當的管理Docker容器。而NodeJs的容器還需要些許定製,將應由部署到容器中然後生成新的鏡像。再次說明,製作鏡像的最佳途徑是寫一個Dockerfile,實現基礎設施可視化。以下通過修改現有鏡像的方法一般只用於演示目的。接下來我們要分別啟動MongoDB和NodeJs的容器實例,並將MongoDB的埠暴露到NodeJs的容器中。
  • Docker 容器資源管理,你真的學會了嗎?
    查看容器佔用資源docker statsDocker 提供了一個很方便的命令 docker stats,可供我們查看和統計容器所佔用的資源情況。我們仍然啟動一個 Redis 容器作為示例。接下來我為你介紹下它輸出內容的含義:Container ID:容器的 ID,也是一個容器生命周期內不會變更的信息。Name:容器的名稱,如果沒有手動使用 --name 參數指定,則 Docker 會隨機生成一個,運行過程中也可以通過命令修改。
  • 機器學習開發的靈藥—Docker容器
    在本文中,我不想討論容器的常規優勢,而想講講講機器學習如何從容器中獲益。容器不僅可以完全封裝您的訓練代碼,還能封裝整個依賴項堆棧甚至硬體庫。您會得到一個一致且可移植的機器學習開發環境。通過容器,在集群上開展協作和進行擴展都會變得更加簡單。
  • Docker容器內ps輸出CPU佔用率全為0的解析
    1、問題現象描述在一個docker容器中:top - 11:17:30 up 132 days, 1:21, 1 user, load average: 11.28, 11.12, 10.96Tasks: 21 total, 1 running,
  • 使用Docker客戶端管理容器:這些命令必須知道
    請記住,映像是只讀的,而當我們創建容器時,有一個薄的讀寫層,它允許我們將數據寫入容器,並且該數據將在容器生命周期中持久存在。另一個重要的要點是,容器被設計為運行單個應用程式,如果該應用程式被終止,我們可以假設容器也將被停止。為什麼這麼說?
  • Docker入門知識|Docker資源容器 與 VM虛擬機的區別與聯繫
    也許很多朋友一開始只希望用這個cgroup來實行作業系統層面資源隔離,從而形成linux系統下多用戶使用中的資源安全。可是GO語言出來之後,喜歡嘗鮮的程式設計師,用GO寫出了docker這大型工具。GO的新生面孔與Docker強大未來前途,一下子把高密度運算帶到了一個新高度。其實在c語言中的Namespaces是不是在Cgroup面前有點似曾相識的味道?
  • 上手 Docker 容器數據管理
    為了驗證 /data 中的數據是否真的保存下來,我們刪除 container1 容器,然後再創建一個新的容器 container2 ,查看其中的 /data 目錄內容:docker rm container1docker run -it -v my-vol:/data --