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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
3
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
肥大化した「SFA」の沼 4カ月でBigQuery×AppSheetの新システムを構築した方法
-
6
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
7
次世代RPA「ハイパーオートメーション」が急成長か Gartnerが予測
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
昭和大学病院がeICUを導入、ICUの患者情報を遠隔地で一括管理
-
10
「何から始めればいい?」 情報漏えい対策で悲鳴を上げる中小企業のリアル
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
4
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
5
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
6
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
“あのファイル転送”で暗躍するノーウェアランサム
-
10
「オンプレミス回帰」せざるを得ない“合理的な理由”
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー