LinuxとWindowsの壁を乗り越える
Dockerコンテナの移植性を高める「LinuxKit」のメリットとデメリット
コンテナプラットフォームは高度な移植性を実現する。だがコンテナの移植性には幾つかの制限がある。永続ストレージ、異なるコンテナ形式などがその例だ。
現在のソフトウェア環境では移植性が重要だ。一種類のホストサーバ、OS、ソフトウェア環境でしか実行できないアプリケーションでは、ビジネスニーズを満たせなくなっている。そのようなアプリケーションはアジリティに欠け、ソフトウェアやハードウェアのアップグレードを妨げる。さらにメンテナンスも難しい。
この移植性の課題の解決策になるのがコンテナプラットフォームだ。コンテナは、移植性のないアプリケーションをほぼどこにでも簡単に導入できるようにする。ただし幾つか注意点はある。
併せて読みたいお薦め記事
コンテナの可能性
コンテナ管理ツール比較
- Kubernetes、Elasticsearch、Prometheus コンテナ管理ツールを比較する
コンテナへの懐疑的な視点
移植性の定義
ソフトウェアの移植性とは、1つのアプリケーションを種類が異なるホスト環境で実行できることだ。この移植性にはさまざまなレベルがある。全ての種類のLinuxディストリビューションで実行できても、Microsoftの「Windows」では実行できないアプリケーションは、LinuxとWindowsの両方で稼働するアプリケーションに比べれば移植性は低いといえる。
また、アプリケーションをある環境から別の環境に移行する際にどの程度調整が必要かという観点で移植性が測られることもある。移植性の高いアプリケーションは、構成ファイルを大幅に変更することなく、全てプラットフォームに導入できる。
これに対して移植性が低いアプリケーションは、同様にさまざまなシステムで実行できるとしても、環境を変える場合は構成を大幅に調整しなければならない。
移植性についての従来のアプローチ
従来、移植性はアプリケーションレベルで実現してきた。つまり全てのホスト環境にほぼ共通した構成で実行できるアプリケーションを設計することで、開発者が移植性を実現していた。
こうした状況では、適切なプログラミング言語を選ぶことが重要になる。Javaなど一部の言語は、コードに大きな変更を加える必要なく、任意の種類の環境を簡単にサポートできる。だが、.NETのようなフレームワークでは複数の種類のOSをサポートするのはかなり難しい。
また、アプリケーションの移植性を高めるには、特定のOS機能やツールに依存しない構成を設計することが重要だとされている。例えばアプリケーションの構成をWindowsレジストリに保存しているとしたら、Linuxに移植するのは難しくなる。構成をプレーンなテキストファイルに保存する方が移植性は高いといえる。
仮想マシン(VM)は、ある程度の移植性を実現する1つの手段になる。例えばVMを使用すると、Linuxでしか実行できないアプリケーションをWindowsサーバでホストすることができる。この種のソリューションは、ホスト環境をクロスプラットフォーム対応にできる移植性を実現するが、ある程度の制限が残っている。WindowsベースやLinuxベースの物理サーバを使用できるため、ホスティングインフラレベルでの柔軟性は実現できる。だが同時に、アプリケーションを導入するには、特定の種類のゲストOSを使用することが求められる。
コンテナによって実現する高度な移植性
「Docker」などのコンテナプラットフォームの進化により、アプリケーション自体を変更したりVMに頼ったりすることなく、アプリケーションの高度な移植性を実現できるようになった。コンテナを利用すれば、1種類のホスト環境向けに作成したアプリケーションをほぼ全ての環境に導入できる。大抵の場合、アプリケーションの構成に変更を加える必要はない。
コンテナは「いったん作成すればどこでも実行できる」のがその理由だ。コンテナを利用する場合、コードをコンパイルしてコンテナイメージに配置する。このイメージは、コンテナをサポートするデーモンがインストールされたあらゆる種類の環境に導入できる。これが機能するのは、アプリケーションのバイナリと構成ファイル一式がコンテナ内に格納されるためだ。そのためアプリケーションはコンテナ外の環境変化の影響を受けない。
コンテナの移植性の制限事項
ただしコンテナプラットフォームがあれば、アプリケーションの移植性が制限を受けないというわけではない。コンテナでも、永続ストレージやコンテナ自体の移植性に関する制限事項など、一定の制限を受ける。
コンテナをある環境から別の環境に移動する際、コンテナ内のアプリケーションが利用する永続ストレージ構成の変更が必要になる場合がある。これは、コンテナ向けに永続ストレージを実装する方法が複数あり、ある環境におけるストレージの設定が、別の環境を念頭において設計されたコンテナではうまく機能しない可能性があるためだ。もちろん、コンテナ内に格納されたアプリケーションがステートレスの場合やストレージを必要としない場合は、こうした制限は受けない。
コンテナは、同じ種類のコンテナプラットフォーム間では移植性が高い。だがDockerなど、1種類のプラットフォーム向けにコンテナを構築すると、「Linux LXC」(Linux Containers)のような別のプラットフォームで実行できなくなる。また、最新バージョンのDocker向けに設計したコンテナは、旧バージョンのDockerでは機能しないことがある。他のテクノロジーと同様、Dockerも旧バージョンとの互換性の影響を受ける。
LinuxとWindowsの壁を乗り越える
あるOSファミリー(Windowsなど)から別のOSファミリー(Linuxなど)にコンテナを移植することも簡単ではない。VMと比べた場合、コンテナの移植性の大きな問題点は、伝統的にホストが限定される点にある。つまりLinuxのコンテナアプリケーションにはLinuxホストが、WindowsのコンテナアプリケーションにはWindowsホストがそれぞれ必要になる。
この点では、コンテナはVMマシンよりも移植性が低い。LinuxベースのVMはWindowsホストで実行でき、WindowsベースのVMもLinuxホストで実行できる。さらにコンテナは、LinuxとWindows以外のプラットフォームは全くサポートしない。そのため、例えば「Docker化」されたアプリケーションをAppleの「macOS」に導入するネイティブな方法はない。macOSのホストシステムとDockerコンテナの間の仲介としてLinuxベースのVMを機能させることで、この問題は解決できる。だがリソース使用率は高くなり、管理の負担が増えることになる。
ただし最近、Dockerに関してはこの状況が変化している。2017年春、Dockerは「LinuxKit」を発表した。LinuxKitは全ての開発者がコンテナ内に「Linuxサブシステム」を作成できるようにするツールセットだ。このLinuxサブシステムは、コンテナが別の種類のOSで実行されていても、コンテナ内で実行される小さなLinuxベースのOSを提供し、Dockerアプリケーションを実行できるようにする。このアプローチにはVMの必要はない。
LinuxKitにより、Dockerは少なくともLinuxアプリケーションに関しては最大限に移植性を高めることに成功した。Linuxコンテナアプリケーションは、LinuxKitを使ってパッケージ化される。このパッケージは、ある環境から別の環境に移行するときに構成に特別な変更を加えずに、どのような種類のホストOSでも実行できる。
ただ注意点が2つある。まずLinuxKitはDockerフレームワークとしか連携しない。LXCなど、他の種類のコンテナプラットフォームはLinux専用のままだ。次に、LinuxKitが適用されるのはLinuxアプリケーションのみだ。依然として、WindowsのコンテナアプリケーションをLinuxホストで実行する方法はない。
結論
コンテナの移植性には一定の制限がある。だがコンテナプラットフォーム、特にDockerにより、アプリケーションをあるホストプラットフォームから別のプラットフォームへ移植することがかなり簡単になった。LinuxKitがリリースされたことで移行はさらに容易になる。このツールによってLinuxのコンテナアプリケーションに完全な移植性がもたらされる。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社kickflow] 2社の事例に学ぶワークフロー改革:属人化解消や年数万件の申請書類削減のコツ -
製品資料
[NTTPCコミュニケーションズ株式会社] 「回線速度不足」だけが原因ではない? Web会議の遅延を解決する方法とは -
製品資料
[東京エレクトロン デバイス株式会社] 工場の可用性向上に重要な「7つの領域」と対策 OTセキュリティ強化の基礎知識 -
製品資料
[リコージャパン株式会社] 問い合わせ対応で本来の業務が進まない、総務や情シスの負担をどう減らす? -
製品資料
[リコージャパン株式会社] 自社データから高精度な回答を生成、簡単に生成AIチャットボットを構築する方法
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「ITインフラとデータ保護・バックアップ対策」に関するアンケート
-
2
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
3
全社標準Copilotに絶望? MS Copilotで問い合わせ6割減できた企業は何が違った
-
4
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
5
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
6
ITエンジニア1265人調査 生成AIを使い込むほど「人の確認」が重い理由
-
7
「AI活用を前提とした業務PCへの移行」に関するアンケート
-
8
頻繁な承認が生む“確認疲れ” 「MCP」を安全に使う権限管理とは
-
9
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
-
10
MS&ADグループの目指す「AX」の全貌 本山CDOが語る変革の本質
ホワイトペーパーランキング PR
-
1
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
2
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
3
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
4
Windows PCとMacの選択制で生産性向上 LINEヤフーが実践する運用管理方法とは
-
5
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
「スクラム」と「カンバン」の違いとは? アジャイル型開発手法を徹底比較
-
8
AI時代に成功するための「ナレッジマネジメント」ベストプラクティス
-
9
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
10
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー