Скажите, если у меня есть скрипт bash, который загружает три образа докера A, B, C.Три docker load & push
команды запускаются примерно в то же время, что и фоновые процессы:
for $image in {img_A,img_B, img_C}: do
(docker load $image
docker push $image
) &
done
Если эти три изображения имеют несколько общих слоев, например:
- Структура A имеет вид: Shared_ABC_1, Shared_AC_2, Unique_A3 ....
- Структура B: Shared_ABC_1, Unique_B2, Unique_B3 ....
- Структура C: Shared_ABC_1, Shared_AC_2, Unique_C3 ....
, где Shared_ABC_1
существует в качестве 1-го слоя на всех изображениях A, B и C,Shared_AC_2
существует как 2-й слой на изображениях A и C.Где слои Unique
являются слоями, существуют только в соответствующем изображении.
&
в операторах цикла создает несколько разветвленных процессов, работающих в фоновом режиме.Предполагая, что подоболочка для изображения A начинается в момент времени t = 0,01 с, изображение B начинается в момент времени t = 0,02 с, изображение C начинается в момент времени t = 0,03 с.
Мой вопрос таков: когда демон получил запрос на загрузку изображения Aв момент времени t = 0,01 с он уже знает, какие слои должны быть загружены для A. Затем, когда позже появится запрос на загрузку и отправку для B и C, он заметит, что A, B, C совместно используют некоторые общие слои, теперь будет Daemon.загрузить слой shared_ABC_1
снова?Или он сначала начнет загружать Unique_B2 и просто подождет, пока shared_ABC_1
не завершит загрузку, а затем использует общий доступ к слою по A, B и C?