実行できる並列Dockerプッシュ/プルの数に制限はありますか?
例えば。 Dockerプル/プッシュコマンドをスレッド化して、同時に異なるイメージをプル/プッシュする場合、並列プッシュ/プルの数の上限はどれくらいでしょうか
または代わりに
ある端末でdocker pull ubuntuを実行し、別の端末でdocker pull httpdなどを実行します-Dockerがサポートする制限は何ですか?
Dockerデーモン(dockerd)には2つのフラグがあります。
--max-concurrent-downloads int Set the max concurrent downloads for each pull
(default 3)
--max-concurrent-uploads int Set the max concurrent uploads for each Push
(default 5)
上限は、プロセスに許可する開いているファイルの数(ulimit -n
)。他のDockerファイルハンドルにはオーバーヘッドがいくらかありますが、プッシュとプルのそれぞれが、リモート接続用とローカルファイルストレージ用の複数のハンドルを開くと思います。
この複雑さをさらに複雑にするのが、イメージのプッシュとプルのそれぞれで、同時制限まで、レイヤーごとに1つずつ、複数の接続を開くことです。したがって、12個の同時プルを実行すると、プルする可能性のあるレイヤーが50〜100になる可能性があります。
Dockerではこれらの制限を引き上げることができますが、より多くの同時接続を開くためのマイナスのリターンでなければ、リターンが減少するという実際的な制限があります。リモートレジストリへの帯域幅が制限されていると仮定すると、より多くの接続がその帯域幅を分割するだけであり、Docker自体は最初のレイヤーが完了するまで待機してから、その送信の解凍を開始します。また、中断されたドッカーのプルまたはプッシュは、レイヤーの部分的な送信をすべて失うため、より多くの同時接続で再送信する必要がある潜在的なデータを増やします。
デフォルトの制限は開発環境に適しています。調整する必要がある場合は、同時セッションの最大数を見つける前に、パフォーマンスの向上を測定することをお勧めします。
オプションは構成ファイルで設定されます(LinuxベースのOSは、パス:/etc/docker/daemon.jsonおよびC:\ ProgramData\docker\config\daemon.jsonにあります)。
/etc/docker/daemon.jsonを開きます(存在しない場合は作成します)
値(プッシュ/プルの場合)を追加し、並列操作の制限を設定します。
{
"max-concurrent-uploads": 1,
"max-concurrent-downloads": 1
}
再起動デーモン:Sudo service docker restart