問題タブ [docker-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Docker Engine API を使用してコンテナの CPU コア数を設定する
Docker Engine API (Json API) を使用して Docker コンテナを起動するバックエンド サーバー プログラムがあり、Docker コンテナあたりの CPU コア数をたとえば 1 に制限したいと考えています。
Docker Engine API ドキュメントには、コンテナーの CPU 設定を構成するためのいくつかのオプションがあります。 https://docs.docker.com/engine/api/v1.24を参照してください。
これを使用することもできますCpusetCpus
が、どの Docker コンテナーがどの CPU コアに割り当てられているかのリストを保持する必要があるため、これは非常に面倒です。(コンテナがどの CPU コアで実行されているかは気にしません。複数の CPU コアを使用することを避けたいだけです。)
また、各 docker コンテナーがすべての CPU コアの 12.5% のみを使用するように設定することもできCpuQuota
ます。これは、8 つの CPU コアを持つサーバーの 1 つの CPU コアに相当します。このアプローチの問題は、異なる数の CPU コアを持つ別のサーバーでバックエンド プログラムを実行すると、CpuQuota
12.5% の設定が 1 つの CPU コアに対応しなくなることです。
上記のオプションはどちらも扱いにくく、理想とはほど遠いものです。コンテナごとの CPU コアの数を設定するための、より優れた/より簡単な方法があるに違いありません!
docker - モジュール間の依存関係/初期化順序を強制する方法はありますか?
Azure IoT Edge を使用して、デプロイ内のコンテナー/モジュールの初期化順序を保証する方法を見つけられませんでした。たとえば、A と B の 2 つのモジュールがあるとします。A はサーバーで、B は A に依存するクライアントです。私の知る限り、A が B より先に起動することを保証する方法はありません。
Azure IoT Edge デプロイ テンプレートは Docker Engine API に準拠していますが、その API を通じて依存関係を適用する方法が見つかりませんでした。回避策として、各コンテナーのコードで実行されているコンテナーについては想定していません。これは機能しますが、追加のコードのオーバーヘッドは理想的ではありません。特に、docker-compose のようなツールを使用すると、初期化順序の強制がかなり簡単になることを考慮してください。
このようなことをしたい (src: https://docs.docker.com/compose/compose-file/ ):
回避策として、上記の例に従って、web
コンテナで次のようなことを行って、依存アクションを実行postgres
する前に稼働していることを確認しました。web
postgres
もちろん、これは明らかな欠陥のある不自然な例ですが、回避策の要点を示しています。