Dockerコンテナで異なるLinux OSを動作させる?
質問
Docker を学ぼうとしているのですが、1つだけ不可解なことがあります。それは、(ホスト OS とは)異なる Linux のフレーバーが、実際に Docker コンテナでどのように動作するのかということです。
私の Docker ホストが RedHat を実行していると仮定して、私が Ubuntu イメージからコンテナを開始する場合、次のことは本当でしょうか。
- 論理的に言えば、Ubuntu イメージのフットプリントが約 550MB の場合、Docker デーモンはコンテナを作成するために、(イメージレジストリから)実際に 550MB 相当の Ubuntu イメージをダウンロードしますか?
- コンテナー内で実行されている Ubuntu のインスタンスは、同じバージョンを手動でダウンロードしてインストールした場合と本質的に変わらないのでしょうか。
Docker コンテナがホスト OS によって使用される同じカーネルを共有すること、および Docker の基本的なポイントの 1 つが、基礎となる OS を使用するコンテナの効率的な利得であることは承知しています。そのため、ホストとは異なる Linux バージョンから作成されたコンテナーを起動したときに実際に何が起こるかについて、少し混乱しています。
どのように解決するのですか?
この前の記事で、もう少し理解できると思います。 Dockerコンテナの分離、基盤となるLinux OSを気にするか? .
問題の核心は、もしホストOSがRedHatであれば、Dockerコンテナで実行するLinuxのどのビルドでも、例えばあなたの例ではUbuntuで使用するのはRedHatカーネルであるということです。
これは、Linux と Docker コンテナの違いが何であるかを理解することになります。 OS と、Linuxの 画像 . Dockerコンテナ内では、完全なUbuntu OSを実行するのではなく、Ubuntuのイメージを実行することになります。
ご質問の目的には、次のように考えています。
OS
= カーネル + ファイルシステム / ライブラリ
画像
= ファイルシステム/ライブラリ
Dockerコンテナ内で実行されているUbuntuイメージは、Ubuntuファイルシステム/ライブラリだけであり、Ubuntuカーネルは含まれません。これは、基礎となるホストのカーネル (その他のもののうち) を活用する Docker コンテナから得られる効率性を部分的に説明するものです。
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】DockerコマンドでDockerデーモンに接続できない。
-
[解決済み] すべてのdockerボリュームを削除するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Alpine Dockerfile --no-cache Vs. rm /var/cache/apk/* の利点。
-
[解決済み] ディレクトリをファイルにマウントしようとしていませんか(またはその逆)?
-
[解決済み] Dockerで既存の名前付きボリュームにデータを追加する正しい方法は何ですか?
-
[解決済み] Dockerにマウントされたボリュームは、Linuxスタイルのパスから変換する際にWindowsパスの最後に;Cを追加します。
-
[解決済み] Dockerfileです。一行で複数の環境変数を設定する
-
[解決済み] Docker ENTRYPOINTとKubernetesコンテナ仕様COMMANDの違い?
-
[解決済み] RHEL上のDocker CE - Requires: container-selinux >= 2.9
-
[解決済み] Docker: 実行中のDockerコンテナ内のオープンソケットをリストアップする方法はありますか?
-
[解決済み] Dockerのimportとloadの違いは何ですか?
-
[解決済み] dockerのHyperKitで作成したVMにアクセスする方法を教えてください。