我是 docker 的新手,遇到了一个我遇到麻烦的路障。
这是我的场景
当前(预容器)
所需(容器)
为了解决这个问题,我只是从 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 构建的建议都非常感谢。
谢谢。
最佳答案
离线传输图像的唯一方法是使用 docker save 将其保存到 tarball 中。
至于图片的大小,解决方法是使用更小的aspnet
.您正在使用的是 7GB 大的。因此,您需要从 available ones 中选择一个足够小的 aspnet 镜像。
另一种解决方案是传输源代码并在目标机器上构建镜像。在这种情况下,您保存 microsoft/aspnet:latest
到一个 tarball 并转移它 一次到目标机器。每当您在源中有新的更新时,您将源和 Dockerfile 复制到目标机器并在那里构建镜像。
关于asp.net - 将 Docker 部署到离线 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328506/