如何为离线环境运送Docker可交付成果[关闭]

问题描述 投票:-1回答:1

[我们目前正在研究Docker,以将其作为应用程序的发布和部署方式,但我们之前从未做过,而且我们不确定是否有足够的好处来证明这项工作的合理性。这是对我们的方案的简短描述:

  • 我们的应用程序部署在本地(客户站点),安全且无法访问Internet的网络上。我们没有对目标服务器的远程访问,并且基础架构由客户IT本身运营。
  • 我们的应用程序建立在以下堆栈上:Java,Spring Boot,SQL Server DB(或其他)。
  • 在某些情况下,我们的应用程序必须连接到附加的数据库源,该源位于客户网络上,但与我们的应用程序位于不同的服务器上
  • 在某些情况下,我们应用程序的数据库也可能位于客户控制的单独服务器上
  • 在某些情况下,客户为我们分配了一个VM(通常是Windows),我们可能需要在该VM中安装Docker主机(这似乎可能导致性能问题)。
  • 目前,客户IT可以访问我们的应用程序所在的Tomcat,并且可以进行自己的更改(例如,关于SSL配置等。

问题

  1. 在这种情况下使用docker是否有意义?缺少互联网以及我们对整个基础架构的控制很少,是否会使使用docker变得太困难?
  2. 使用docker时我们应该如何构建和交付?目前,我们使用maven并生成jar(或war)文件,然后将其安装在目标服务器上。是否有特定于离线环境中运送Docker映像的解决方案?我们需要的是一个看起来与现在类似的流程,在此我们可以构建可交付成果并将其轻松交付给客户。我们无法在现场执行复杂的安装过程。
  3. 如何在不丢失所有现有数据的情况下交付软件更新?
  4. 如果没有使用Docker的经验,这会使客户IT变得更难吗?如果我们决定使用它,似乎无法避免也必须学习允许他们执行一些基本操作的基础知识(例如访问tomcat实例并修改tomcat配置)。
  5. 在Windows VM上安装Docker主机明智吗?

非常感谢

java spring docker maven offline
1个回答
0
投票

如在this question的公认答案中所述,您可以保存和加载Docker映像。

  1. 将图像拖入具有互联网访问权限的计算机上或构建自己的图像(假设您在当前目录中有一个定义容器的Dockerfile)

    $ docker pull mysql:5.7.30
    $ docker build --tag app:1.0 .
    
  2. 将图像保存到.tar文件。您将要使用映像存储库和标记信息,而不是映像ID,因为命令docker save <image id>删除了在目标服务器上有用的存储库和标记名称。

    $ docker save --output mysql-5.7.30.tar mysql:5.7.30
    $ docker save --output app-1.0.tar app:1.0
    
  3. 将文件复制到目标计算机

  4. 将.tar文件加载到docker

    $ docker load --input mysql-5.7.30.tar
    $ docker load --input app-1.0.tar
    

参见:

有关持久数据,请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.