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
-
製品資料
[株式会社うるる] 「入札市場」攻略ガイド:効率的に落札するためのポイントを徹底解説 -
製品資料
[株式会社うるる] 入札情報に特化した「販路拡大」「効率化」のためのサポートツールとは? -
市場調査・トレンド
[株式会社うるる] 公共入札に成功する企業と失敗する企業の「5つの違い」 -
製品資料
[日本ビジネスシステムズ株式会社] 専門家が教える、Microsoft 365の「テナント統合/分離」を成功に導く秘訣 -
製品資料
[rakumo株式会社] Microsoft 365での情報埋没を防ぐ、社内ナレッジを資産化する情報ポータル活用
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
2
「Microsoft 365」が乗っ取られる MFAを破る“本物の画面”の恐怖
-
3
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
4
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
5
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
6
AI導入が失敗する“真犯人”は現場のマニュアル 7割が陥る「標準化」のわな
-
7
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
8
ライオンが脱レガシーシステムのパートナーに「Google Cloud」を採用した理由
-
9
ITの世界で「エグレス」(Egress)はどういう意味? 実例で解説
-
10
「テザリング依存」に潜む落とし穴 “遅いVPN”を解消するネット構築術
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
3
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
4
「IT史に名を残すシステム障害」8選
-
5
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
-
6
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
7
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
-
8
AI駆動開発のスピードと安全性を両立 「品質・セキュリティ管理」の実践ガイド
-
9
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
10
「標的型攻撃メール」事例・サンプル集
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー