lxcficon.jpg Dockerとの違い

元のページに戻る

Dockerとの違い

最近はDockerが大きく着目されてきました。そのためかLXCFとDockerは何が違うのか?と最近よく訊かれます。 簡単に相違点について述べておきましょう。Dockerについては私がWeb上などでいろいろと今まで見聞きした情報や実際に使ってみた経験をもとにします。
DockerもLXCFもどちらもコンテナ技術をベースにしています。しかし、目指すべき目標はそれぞれ異なり、そのために仕組みや使い方などは大きく異なっています。

特徴のちがい

LXCFは次のような特徴を持ちます。

- 自由で可変なシステム
LXCFは自由にシステムを構築できます。LXCFで構築した環境は、常に最新になるようにアップデートして大事に永く使っていくことができます。
LXCFは、HOST上のOS環境を元に生成され、さらにHOSTとは別のシステム環境にすることも通常のシステム管理の手法で行えます。
LXCFは、オーバーヘッドがなく効率の良いVMと位置付けてもよいでしょう。

- HOSTと同じ環境
HOSTと同じ環境をいつでも生成できるため、インストールが簡単です。 また、不特定の他者の作成したOSイメージを元にしたシステムはセキュリティ上どうしても不安が拭えませんが、LXCFは常にベースが自分のHOST環境であり、セキュリティを保つのがより容易だといえます。

- 1つのコンテナで多彩な機能実行、多数のサーバープロセス
LXCFでは1つのコンテナで、HOSTと同じサーバ機能を実行可能です。そのためにsystemd経由でサーバプロセスをシステムデーモンとして起動します。
システムデーモンはsystemdの操作でコンテナごとに止めたり起動したりできます。
Dockerの場合は、デーモンでイベントの待ち受けをしたり、異常停止したプロセスの再起動を行う場合には、何らかの手段を追加しなければなりませんが、LXCFではsystemdを使ってデーモンプロセスを通常のOSと同様に管理できます。

Dockerは次のような特徴を持つと私は考えます。

- Immutable システム
システムとして作成されたイメージは、アップデートや保守をするのではなく、新しいバージョンのシステムが出た時には古いバージョンのシステムは捨ててしまう。つまり、常に最新のシステムを使い、中身を変えることなくImmutalbe(不変)なシステムとして使います。これにより壊れれば捨てればよいし、古くなれば新しいものと取り換えればよいという思想です。
クラウド上では今後このような運用が増えるということでしょうか。

- ポータブルなアプリケーション
Dockerはアプリケーションのために必要なライブラリやコマンドをすべて同梱します。これにより、どこの環境に持っていってもアプリケーションが動作します。また、アプリケーションが使うものだけ同梱すればよいのでイメージの大きさが小さくできます。

- 一つのコンテナに一つの機能、一つのプロセス
1つのDockerのコンテナは、目的とするアプリケーションを実行するためにいろいろなプログラムを実行する必要はありません。また、アプリケーションを実行するのに最小限のプロセスさえ動作すればよいという考え方です。これによりアプリケーションを効率よくコンパクトに実行できます。

まとめ

LXCFは、従来のVMの代わりとして設計されています。
LXCFは、数秒で起動し、オーバーヘッドが0のVMのように動作します。
また、同じコンテナ技術をベースにしていても、LXCFはDockerの代わりではありません。同様に、DockerをLXCFの代替とするのは難しいでしょう。
当たり前の結論ではありますが、適材適所で使うのがよいのです。

しかし、Dockerではできないことが、LXCFでは可能です。

元のページに戻る