我是码头工人的新手并遇到了障碍我遇到了麻烦。
这是我的方案
当前(预容器)
所需(容器)
为了开始解决这个问题,我只是从VS 2017创建了一个新的ASP.NET Web应用程序。我选择了Web Api并启用了docker支持。太好了,现在我有一个运行网站/服务的容器。我接下来想要弄清楚如何部署容器/图像。作为参考,这是我创建空项目时创建的默认Dockerfile。
FROM microsoft/aspnet:latest
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
我首先看了“docker save”。我的想法是我可以将图像保存为文件并使用它来部署容器。但是,因为我使用的是完整的.net框架,所以保存的文件是7.7 GB。我明白为什么它如此之大;该图像不仅包含我的示例网站,还包含其中的microsoft / aspnet图像。经过一些谷歌搜索,我发现引用能够排除图层(https://github.com/moby/moby/pull/9304),但似乎“docker save”不支持。最终,这就是我想要的 - 能够将我的图层保存到文件中。
我是否正试图找出如何保存图层?我们对如何实现这一点非常开放,但我们无法为每个软件更新部署7.7 GB文件。
有关如何执行此操作的任何建议 - 尤其是包含VS Online版本的任何建议都非常感谢。
感谢。
答案 0 :(得分:1)
离线传输图像的唯一方法是使用docker save
将其保存到tarball中对于图像的大小,解决方案是使用较小的aspnet
。你正在使用的是7GB大。因此,您需要从available ones
另一种解决方案是传输源代码并在目标机器上构建映像。在这种情况下,您将microsoft/aspnet:latest
保存到tarball并将其一次传输到目标计算机。每当您在源中有新的更新时,您将源和Dockerfile复制到目标计算机,然后在那里构建映像。