Docker は lxc-tools (ユーザー空間 LXC ツール) に何を追加しますか? 質問する

Docker は lxc-tools (ユーザー空間 LXC ツール) に何を追加しますか? 質問する

Docker の機能を見てみると、そのほとんどは LXC によってすでに提供されています。

では、Docker は何を追加するのでしょうか? 単純な LXC ではなく Docker を使用する理由は何でしょうか?

ベストアンサー1

からDockerに関するよくある質問:

Docker は lxc の代替ではありません。「lxc」は、プロセスを相互にサンドボックス化し、リソース割り当てを制御できる Linux カーネルの機能 (具体的には名前空間とコントロール グループ) を指します。

この低レベルのカーネル機能の基盤の上に、Docker はいくつかの強力な機能を備えた高レベルのツールを提供します。

  • マシン間でのポータブルなデプロイメント。Dockerは、アプリケーションとそのすべての依存関係を単一のオブジェクトにバンドルするための形式を定義します。このオブジェクトは、Docker 対応のマシンに転送でき、アプリケーションに公開される実行環境が同じであることが保証された状態でそこで実行できます。Lxc はプロセス サンドボックスを実装します。これはポータブル デプロイメントの重要な前提条件ですが、それだけではポータブル デプロイメントには不十分です。カスタム lxc 構成でインストールされたアプリケーションのコピーを私に送ってもらったとしても、ネットワーク、ストレージ、ログ、ディストリビューションなど、マシン固有の構成に結びついているため、私のマシンではあなたのマシンと同じようには動作しない可能性がほとんどです。Docker はこれらのマシン固有の設定の抽象化を定義しているため、まったく同じ Docker コンテナーを、さまざまなマシンでさまざまな構成で (変更せずに) 実行できます。

  • アプリケーション中心。Dockerは、マシンではなくアプリケーションのデプロイメントに最適化されています。これは、API、ユーザー インターフェイス、設計哲学、ドキュメントに反映されています。対照的に、lxc ヘルパー スクリプトは、軽量マシンとしてのコンテナー (基本的には起動が速く、必要な RAM が少ないサーバー) に重点を置いています。私たちは、コンテナーにはそれ以上の意味があると考えています。

  • 自動ビルド。Docker には、開発者がソース コードからコンテナーを自動的に組み立て、アプリケーションの依存関係、ビルド ツール、パッケージングなどを完全に制御できるツールが含まれています。マシンの構成に関係なく、make、maven、chef、puppet、salt、debian パッケージ、rpm、ソース tarball、またはこれらの任意の組み合わせを自由に使用できます

  • バージョン管理。Dockerには、コンテナの連続バージョンを追跡したり、バージョン間の差分を検査したり、新しいバージョンをコミットしたり、ロールバックしたりするための git のような機能が含まれています。履歴には、コンテナがどのように組み立てられたか、誰が組み立てたかなどが含まれるため、実稼働サーバーから上流の開発者まで完全に追跡できます。Docker は、「git pull」に似た増分アップロードとダウンロードも実装しているため、差分を送信するだけでコンテナの新しいバージョンを転送できます。

  • コンポーネントの再利用。任意のコンテナを「ベース イメージ」として使用して、より特殊なコンポーネントを作成できます。これは手動で行うことも、自動ビルドの一部として行うこともできます。たとえば、理想的な Python 環境を準備し、それを 10 種類の異なるアプリケーションのベースとして使用できます。理想的な postgresql セットアップは、将来のすべてのプロジェクトで再利用できます。などなど。

  • 共有。Dockerはパブリックレジストリ(レジストリ) には、何千人もの人が、redis、couchdb、postgres、irc バウンサー、rails アプリケーション サーバー、hadoop、さまざまなディストリビューションのベース イメージなど、あらゆる便利なコンテナーをアップロードしています。レジストリには、docker チームが管理する便利なコンテナーの公式「標準ライブラリ」も含まれています。レジストリ自体はオープン ソースなので、誰でも独自のレジストリを展開して、たとえば内部サーバー展開用のプライベート コンテナーを保存および転送できます。

  • ツール エコシステム。Dockerは、コンテナの作成と展開を自動化およびカスタマイズするための API を定義します。Docker と統合して機能を拡張するツールは数多くあります。PaaS のような展開 (Dokku、Deis、Flynn)、マルチノード オーケストレーション (maestro、salt、mesos、openstack nova)、管理ダッシュボード (docker-ui、openstack horizo​​n、shipyard)、構成管理 (chef、puppet)、継続的インテグレーション (jenkins、strider、travis) などです。Docker は、コンテナ ベースのツールの標準として急速に定着しています。

おすすめ記事