docker 上で実行されるコンテナーと、JVM 上で実行される自己完結型 Java プログラムの大きな違いは何ですか?
両方とも、基礎となる視覚化なしで物理 Linux サーバー上で直接実行されていると想定しています。
docker 上で実行されるコンテナーと、JVM 上で実行される自己完結型 Java プログラムの大きな違いは何ですか?
両方とも、基礎となる視覚化なしで物理 Linux サーバー上で直接実行されていると想定しています。
JVM 上で実行される Java プログラムは、単一の Linux プロセスになります。JVM はプロセス内で実行され、クラス内の Java バイト コードを解釈 (またはコンパイル) します。
Docker コンテナはより重量があります。実際には仮想化された Linux インスタンスである docker デーモン、docker コンテナー、およびその下で実行される JVM があります。
https://docs.docker.com/engine/getstarted/step_one/とhttps://docs.docker.com/engine/userguide/eng-image/baseimages/が役に立ちました。
それらは大きく異なります。Java プログラムは、OS カーネル上のプロセスです。Javaプログラムであるバイトコードを実行するJVMが実行されています。Java プログラムは、(JVM の制限に応じて) 任意の量のリソースを使用でき、オペレーティング システムを任意の方法で使用できます。
Docker コンテナーは、オペレーティング システム仮想化の実装です。コンテナーを理解する最も簡単な方法は、コンテナーが仮想化を使用してオペレーティング システムの独立したスライスを提供することです。コンテナのリソース使用量を制限し、隔離することで、ファイルシステム、ネットワーク、プロセスなど、コンテナの外部にあるシステムのどの部分も認識しないようにすることができます。カーネルは、コンテナーを提供するために使用される CGroups と Namespaces という特定の機能を提供します。