将Docker部署到脱机PC

时间:2018-01-18 18:58:57

标签: asp.net docker dockerfile

我是码头工人的新手并遇到了障碍我遇到了麻烦。

这是我的方案

当前(预容器)

  1. 我们执行输出MSI的Visual Studio Online构建。构建使用完整的.Net Framework(稍后我们将转到.Net核心)。
  2. MSI放在闪存驱动器上并安装在离线(无互联网访问)计算机上。
  3. MSI安装了几个公开Web api Web服务的Windows服务。
  4. 本地客户端可以查询这些Web服务。
  5. 所需(容器)

    1. 我们希望用docker容器替换windows服务。
    2. 安装仍需离线执行(无法访问互联网)
    3. 我们希望使用docker社区版来避免成本。
    4. 一个假设:离线计算机将安装docker,并且已经下载了基本映像“microsoft / aspnet”。
    5. 为了开始解决这个问题,我只是从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版本的任何建议都非常感谢。

      感谢。

1 个答案:

答案 0 :(得分:1)

离线传输图像的唯一方法是使用docker save

将其保存到tarball中

对于图像的大小,解决方案是使用较小的aspnet。你正在使用的是7GB大。因此,您需要从available ones

中选择一个较小的aspnet图像

另一种解决方案是传输源代码并在目标机器上构建映像。在这种情况下,您将microsoft/aspnet:latest保存到tarball并将其一次传输到目标计算机。每当您在源中有新的更新时,您将源和Dockerfile复制到目标计算机,然后在那里构建映像。