Ubuntu用のDockerコンテナイメージファイルを選択したときにUbuntuで実行できるようにファイル間で何を一致させる必要がありますか?
Unix(MacOS、OpenBSD)ではなくLinux用の画像ファイルを選択する必要がありますか?
Linuxディストリビューション(Ubuntu、Centosなど)と一致する必要がありますか、またはLinuxカーネルのみを一致する必要がありますか?
Linuxカーネルのバージョンと一致する必要がありますか?
ありがとうございます。
答え1
オペレーティングシステムのみが一致している必要があります。
Linux上で実行されているDockerはすべてのLinuxコンテナを実行できますが、Windowsコンテナまたは* BSDコンテナ(存在する場合)は実行できません。
デフォルトでは、Windowsで実行されているDockerはすべてのWindowsコンテナを実行できますが、Linuxコンテナは実行できません。
WindowsハイパーバイザーのLinux仮想マシンで実行されているDockerは、すべてのLinuxコンテナを実行できますが、Windowsコンテナは実行できません。
答え2
コンテナは、ネットワークおよびファイルシステム「バブル」で実行されるプロセスに過ぎません。ホストのファイルに依存しません。したがって、コンテナイメージはホストタイプ(LinuxのLinuxなど)と一致するだけです。私はRHELとCentosでDebianベースのコンテナを実行し、UbuntuでCentosコンテナを実行します。
コンテナイメージの「リリース」バージョンは、次の場合にのみ関連します。
- Dockerfile(など...)にさらにソフトウェアをインストール
apt install
しますyum install
。 - 構成ファイルが別の場所(セキュリティ証明書など)にある可能性がある特定のシステムレベルの調整を実行できます。
- 特定のライブラリに依存するソフトウェアを追加します(たとえば、Alpineベースのコンテナイメージはそうではないため、
glibc
通常のLinuxアプリケーションでは特定のコンパイルが必要な場合やglibを追加する必要があります) - 実行中のコンテナ( )でいくつかの手動メンテナンス/デバッグを実行していますが
docker exec...
、この場合、お気に入りのツールを持つことが役立ちます。
...しかし、これはほとんど便宜上のものであり、互換性の問題ではありません。
複数の異なるイメージがある場合は、同じプライマリ配布イメージからイメージをフォークして、dockerがイメージ間で共通の基盤を共有できるようにすることが役に立ちます(ファイルシステム要件の削減...)。
理論的には、コンテナのアプリケーションは、最小カーネルバージョンを必要とするホストのシステムコールに依存する可能性がありますが、実際には非常にまれです。