我们的情况:
我们正在创建一个基于微服务的应用程序,它由许多. NETDocker容器(ASP .NETCore)组成,当然这些容器都有一个非常大的公共DLL集,大小大约为8 MB。
问题是,基本层是共享的,并缓存在客户端设备上,当然,但我们希望从中挤出更高的效率(因为1000个客户端x 20个服务x 8 MB仍然是160 GB的下载,其中大部分可以避免!)。
到目前为止,我尝试过
1.我为服务创建了一个dockerfile,它的作用如下:
copy --from xyz.example.com/common-libraries /app /app
copy /publish /app
1.我试着用它来建造码头集装箱
1.现在的结果是,我从“common-libraries”下载了8 MB的层,但又从实际构建中下载了所有8 MB的层,即使文件是相同的(即使使用sha 256 sum和ls -l检查,也都是相同的)
1.还尝试了COPY --link --from... etc...
,但这只告诉我“LLB对--link一无所知”
我们的帮助请求:
有没有什么方法可以为dotnetdocker容器中的许多dll文件(其中一些文件很大)创建一个额外的层?这对环境也很好,因为我们都知道大量下载也会产生二氧化碳压力。
1条答案
按热度按时间az31mfrm1#
你可以创建一个自定义的图像作为你的图像的基础。
然后使用
然后将其用作其他图像的基础,方法是
而不是
FROM mcr.microsoft.com/dotnet/aspnet:6.0
。您还应该将基础映像推送到映像存储库中,以供其他开发人员使用。