1. ホーム

[解決済み】Dockerがlxc-tools(ユーザースペースのLXCツール)に追加するものは何ですか?)

2022-03-24 06:04:14

質問

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

では、Dockerは何を追加するのでしょうか?なぜ素のLXCではなくDockerを使うのか?

解決するには?

からの Docker FAQ :

lxcとは、Linuxカーネルの機能(特に名前空間と制御グループ)のことで、プロセスを互いにサンドボックス化し、そのリソース割り当てを制御することができます。

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

  • マシンをまたいだポータブルなデプロイメント。 Dockerは、アプリケーションとその依存関係をすべて1つのオブジェクトにバンドルする形式を定義しており、Dockerが有効な任意のマシンに転送し、そこでアプリケーションに公開される実行環境が同じであることを保証して実行することが可能です。Lxcはプロセスのサンドボックス化を実装しており、これはポータブルデプロイメントの重要な前提条件ですが、それだけではポータブルデプロイメントには十分ではありません。なぜなら、それはあなたのマシンの特定の構成(ネットワーク、ストレージ、ロギング、ディストロなど)に結び付いているからです。Dockerは、このようなマシン固有の設定を抽象化して定義しているので、まったく同じDockerコンテナを、さまざまなマシンで、さまざまな構成で、変更せずに実行することができます。

  • アプリケーション中心。 Dockerは、以下のようなデプロイメントに最適化されています。 アプリケーション マシンとは対照的です。このことは、API、ユーザーインターフェース、設計思想、ドキュメントに反映されています。対照的に、lxcヘルパースクリプトは、軽量マシンとしてのコンテナ、つまり、基本的には、より速く起動し、より少ないラムで済むサーバに焦点を当てています。私たちは、コンテナにはそれ以上のものがあると考えています。

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

  • バージョン管理。 Dockerには、コンテナの連続したバージョンを追跡し、バージョン間の差分を検査し、新しいバージョンをコミットし、ロールバックするなどのgitのような機能があります。また、履歴には どのように そのため、本番サーバーから上流の開発者に至るまで、完全なトレーサビリティを得ることができます。Dockerはまた、"git pull"に似た増分アップロードとダウンロードを実装しているので、コンテナの新しいバージョンは差分だけを送信することで転送することができる。

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

  • 共有する Dockerは、パブリックレジストリ( https://registry.hub.docker.com/ redis、couchdb、postgres、irc バウンサー、rails アプリサーバー、hadoop、様々なディストロのベースイメージなど、何千もの人々が有用なコンテナをアップロードしています。このレジストリには、Dockerチームによって管理されている、便利なコンテナの公式なquot;標準ライブラリ(standard library")も含まれています。レジストリ自体はオープンソースなので、誰でも自分のレジストリをデプロイして、例えば社内サーバーのデプロイ用に、プライベートコンテナを保存したり転送したりすることができます。

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

お役に立てれば幸いです。