ホストLinuxカーネルとの関係
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/11 03:50 UTC 版)
「Docker」の記事における「ホストLinuxカーネルとの関係」の解説
コンテナ仮想化はコンテナ内部からホストカーネルを直接利用するため、エッジケースではホストカーネルのバージョンとDockerに依存した問題が発生する(以下の内容は他の仮想化手法でも類似した形で存在する)。 Dockerイメージは主としてLinuxディストリビューションイメージ、例えばUbuntuイメージを基にして作成されている。ところでLinuxディストリビューションは特定バージョンのLinuxカーネルを含んでいる。例えばUbuntu 18.04.4LTSはv5.3を、Debian 10はv4.19を含んでいる。ゆえにあるDockerイメージがUbuntu 18.04LTSイメージを基にしている場合一見するとカーネルはv5.3かと思うが、コンテナ仮想化はホストカーネルを利用するためDebian10ホスト上でDockerを動作した場合は動作カーネルはv4.19である。またDockerもkernel v4.19上で動作している。 コンテナ仮想化が持つ上記の特性から、いくつかの注意点・欠点がある。 まず異なるホストOSを利用した際の可搬性である。Dockerコンテナは高い可搬性が特徴だが、異なるホストOS例えばUbuntuホストとDebianホストで同一コンテナを動作させた際、カーネルバージョンに違いに起因するコンテナ間で一貫しない動作のリスクが存在する。例えばDebian 8ホストでは発生したカーネル由来のバグがDebian 9ホスト上では修正されて発生しない可能性がある。 また新しいバージョンのLinuxカーネルに依存したイメージが古いLinuxカーネルのホスト上で動かないという問題がある。Ubuntu 18.04.4LTSイメージ(ディストリビューションのカーネルはv5.3)上に構築したアプリケーションがDebian 10(Kernel v4.19)に存在しないカーネル機能を利用していた場合、Debian10ホスト上でこのコンテナを実行すると存在しないカーネル機能を利用しようとしてエラーを起こしてしまう。Linuxカーネルの非常に高い後方互換性から、逆のパターンすなわち古い機能が新しいカーネルのホスト上で動かないパターンは非常にまれと考えられる。 またホストカーネルバージョンとDockerエンジンバージョンの組み合わせによるバグもある。カーネルパニックをおこすエッジケースも存在 している(あらゆる仮想化はホストと仮想化エンジンの不整合リスクを抱えている)。
※この「ホストLinuxカーネルとの関係」の解説は、「Docker」の解説の一部です。
「ホストLinuxカーネルとの関係」を含む「Docker」の記事については、「Docker」の概要を参照ください。
- ホストLinuxカーネルとの関係のページへのリンク