如果我有一个bash脚本可以加载三个docker镜像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
在所有A,B和C图像中均作为第一层存在。 Shared_AC_2
在A和C图像中作为第二层存在。 Unique
层所在的层仅存在于相应的图像中。
循环语句中的&
创建了几个在后台运行的分支进程。假设图像A的子外壳在t = 0.01s处开始,图像B在t = 0.02s处开始,图像C在t = 0.03s处开始。
我的问题是:当守护进程在t = 0.01s接收到加载图像A的请求时,它已经知道要为A加载的图层。然后,当B和C的加载和推送请求稍后出现时,它会注意到A,B,C共享一些公共层,现在,Daemon会再次加载shared_ABC_1
层吗?还是它将首先开始加载Unique_B2,然后等到shared_ABC_1
完成加载,然后在A,B和C上使用共享层?