= [[Embed(lxcficon.jpg)]] Dockerとの違い [FrontPage 元のページに戻る] == Dockerとの違い 最近はDockerが大きく着目されてきました。そのためかLXCFとDockerは何が違うのか?と最近よく訊かれます。 簡単に相違点について述べておきましょう。Dockerについては私がWeb上などでいろいろと今まで見聞きした情報や実際に使ってみた経験をもとにします。[[BR]] DockerもLXCFもどちらもコンテナ技術をベースにしています。しかし、目指すべき目標はそれぞれ異なり、そのために仕組みや使い方などは大きく異なっています。[[BR]] たとえば、mpiの並列クラスタを作るにはどうすればよいでしょうか?[[BR]] [[BR]] LXCFの場合は、通常のシステム管理の方法が有効です。さらに、LXCF固有の便利な機能(複数コンテナを一度に生成、設定ファイルのデプロイなど)が使えます。管理者がすべて設定しなければなりませんが、設定方法については管理者が自由に行えます。[[BR]] 設定は面倒ですが、だれかがmpiのイメージを作ってくれるのを待つ必要はありません。今までのVMなどの使用方法とあまり変わりなく使えます。[[BR]] (LXCFのmpiクラスタ設定例 : [https://sourceforge.jp/projects/lxcf/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AEOpenMPI%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC] )[[BR]] [[BR]] Dockerだと通常のシステム管理とは異なるDockerのシステム固有の設定などが必要ですが、一度誰かがイメージを作ってくれると大勢で使えるようになります。しかし、最初のイメージの作成はDockerに関する知識が必要です。また、インストールする個々の環境の違い(ipアドレス、並列数、sshキーなど)についてはさらに個々に設定しなおす必要があります。[[BR]] [[BR]] LXCFは次のような特徴を持ちます。[[BR]] - 自由で可変なシステム[[BR]] LXCFは自由にシステムを構築できます。LXCFで構築した環境は、常に最新になるようにアップデートして大事に永く使っていくことができます。[[BR]] LXCFは、HOST上のOS環境を元に生成され、さらにHOSTとは別のシステム環境にすることも通常のシステム管理の手法で行えます。[[BR]] LXCFは、オーバーヘッドがなく効率の良いVMと位置付けてもよいでしょう。[[BR]] - HOSTと同じ環境[[BR]] HOSTと同じ環境をいつでも生成できるため、インストールが簡単です。 また、不特定の他者の作成したOSイメージを元にしたシステムはセキュリティ上どうしても不安が拭えませんが、LXCFは常にベースが自分のHOST環境であり、セキュリティを保つのがより容易だといえます。[[BR]] - 1つのコンテナで多彩な機能実行、多数のサーバープロセス[[BR]] LXCFでは1つのコンテナで、HOSTと同じサーバ機能を実行可能です。そのためにsystemd経由でサーバプロセスをシステムデーモンとして起動します。[[BR]] システムデーモンはsystemdの操作でコンテナごとに止めたり起動したりできます。[[BR]] Dockerの場合は、デーモンでイベントの待ち受けをしたり、異常停止したプロセスの再起動を行う場合には、何らかの手段を追加しなければなりませんが、LXCFではsystemdを使ってデーモンプロセスを通常のOSと同様に管理できます。[[BR]] Dockerは次のような特徴を持つと私は考えます。[[BR]] - Immutable システム[[BR]] システムとして作成されたイメージは、アップデートや保守をするのではなく、新しいバージョンのシステムが出た時には古いバージョンのシステムは捨ててしまう。つまり、常に最新のシステムを使い、中身を変えることなくImmutalbe(不変)なシステムとして使います。これにより壊れれば捨てればよいし、古くなれば新しいものと取り換えればよいという思想です。[[BR]] クラウド上では今後このような運用が増えるということでしょうか。[[BR]] - ポータブルなアプリケーション[[BR]] Dockerはアプリケーションのために必要なライブラリやコマンドをすべて同梱します。これにより、どこの環境に持っていってもアプリケーションが動作します。また、アプリケーションが使うものだけ同梱すればよいのでイメージの大きさが小さくできます。[[BR]] - 一つのコンテナに一つの機能、一つのプロセス[[BR]] 1つのDockerのコンテナは、目的とするアプリケーションを実行するためにいろいろなプログラムを実行する必要はありません。また、アプリケーションを実行するのに最小限のプロセスさえ動作すればよいという考え方です。これによりアプリケーションを効率よくコンパクトに実行できます。[[BR]] LXCFは、従来のVMの代わりとして設計されています。[[BR]] LXCFは、数秒で起動し、オーバーヘッドが0のVMのように動作します。[[BR]] また、同じコンテナ技術をベースにしていても、LXCFはDockerの代わりではありません。同様に、DockerをLXCFの代替とするのは難しいでしょう。[[BR]] 当たり前の結論ではありますが、適材適所で使うのがよいのです。[[BR]] [FrontPage 元のページに戻る]