固定メモリ設定で作成されたDockerコンテナがあるとします。その場でメモリを解放することはできますか? LXCの簡単なコマンドlxc-cgroup -n name memory.limit_in_bytes 256M
でこれを行うことができるためです。実行中のDockerコンテナのメモリをすぐに解放します
答えて
あなたはどちらかなしで、コンテナメモリを解放することはできません。
- はドッカーコンテナのは、ホストシステム上のプロセスとして表現されているので、これはホストのメモリ
をクリアコンテナ
を頼ることがあり、特に以来困難ですディスクへのメモリバッファ内
フラッシュデータ: $ sync
クリアOSのページキャッシュ: $ echo 1 > /proc/sys/vm/drop_caches
は、それ自身の上のコンテナは、多くのメモリを使用しません。彼らは非常に軽量設計されています。それをあなたのホスト上のフェンスで囲まれた領域と考えてください。残りのホストからコンテナを分割するテープのほんの一部です。
カーネルには、cgroups、名前空間、インターフェイス、デバイスなどが格納されていなければなりませんが、これはごくわずかです。
Docker自体もコンテナの管理に少量のオーバーヘッドが導入されますが、それは通常無視されます(たとえば、1000個のポートをコンテナにマップしない限り)。
メモリの主な用途は、コンテナ内で実行されるプロセスです。上限を設定した場合、コンテナは256MBを使用しません。これは、割り当てが失敗し始める前の上限です。
使用済みメモリを解放する場合は、コンテナ内で実行しているプロセスにその能力が必要か、メモリを使用してプロセスを再起動できます。
はい、メモリを積極的に解放したい場合は、あなたが言うことは唯一の正解です。実際には、コンテナの上限メモリ制限が設定されている場合、上限を超えないメモリを使用できます。また、100%でない場合、残りのメモリは同じホスト上にある他のコンテナでも使用できます。これは、Xenの仮想化技術におけるメモリ・バロンに似ています。 –
- 1. 実行時にOS用のJavaメモリを解放します。
- 2. dockerはSQLiteデータベースのメモリ解放を示していません
- 3. docker-composeコンテナを既存の実行コンテナにリンクします。
- 4. javaプログラムの実行後にメモリを解放する方法
- 5. ローカルファイルシステムから実行中のDockerコンテナにファイルを追加する
- 6. データセットで作業中のメモリの解放
- 7. dockerコンテナの中にダメモンとしてlogstashを実行しています
- 8. Dockerは実行中のコンテナのコンテンツをどこに保存しますか?
- 9. オブジェクトのメモリを解放します
- 10. 実行後にSQL Serverがメモリを解放しない
- 11. dockerコンテナからのdockerコマンドの実行
- 12. dockerコンテナで実行中のcassandraをバックアップする方法
- 13. 関連レコードを解放してYii1のメモリを解放する
- 14. 実行中のコンテナからdocker-compose.ymlファイルの場所を取得しますか?
- 15. Kerasを使用したクロスバリデーション中にGPUメモリを解放する
- 16. OpenCVメモリを解放しますか?
- 17. Dockerコンテナのメモリ使用量
- 18. docker-compose upはコンテナを起動してすぐにコンテナを開始します
- 19. Linux + Docker - Dockerコンテナからホストのアプリケーションを実行するには?
- 20. docker(DIND)の内部でdockerコンテナを実行するには?
- 21. Dockerコンテナで実行するとすぐにNanohttpdが終了する
- 22. UIWebViewを解放した後でサウンドがまだ実行中
- 23. Docker - Prometheusコンテナがすぐに死ぬ
- 24. Pythonのリストで使用済みメモリをすぐに解放する方法は?
- 25. Dockerコンテナは、PHPコードの実行直後に終了します
- 26. クラスのメモリを解放するには?
- 27. メモリ解放C++
- 28. UINavigationViewControllerメモリ解放
- 29. Three.js - 解放メモリ
- 30. Tomcatサービス停止時にDockerがコンテナ内のポートを解放しない
はい、あなたは正しいです。いくつかのプロセスはメモリを共有するか、またはほとんどのメモリがプロセスの実行によって占有されるため、メモリ解放は危険で実行不能です。しかし、コンテナにメモリ使用率が低い場合は可能ですか? –
小さな用語ノート、コンテナはプロセスではありません。コンテナはプロセスが実行されるコンテキストです。そのコンテキストで複数のプロセスを実行できます。コンテナコンテキスト内でプロセスを再起動することができます。したがって、2つは常に1対1のマッピングではありません。コンテナ内で実行されているプロセスは、ホスト上のプロセスと同じように、自身のメモリをフラッシュする機能を持つことができます。しかし、あなたはコンテナがプロセスを助けることができないと言っているのは間違いありません。 – Matt
私の貧弱な表現のため申し訳ありませんが、私が意味することは、コンテナがプロセスではなく、コンテナ内で実行されるプロセスです。 –