如何为离线环境运送 docker 可交付成果

How to ship docker deliverables for an offline environment

我们目前正在研究 Docker 作为发布和部署应用程序的一种方式,但我们以前从未这样做过,我们不完全确定收益是否足以证明付出的努力是值得的。 这是我们场景的简要描述:

问题

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

非常感谢

的已接受答案中所述,您可以保存和加载 docker 个图像。

  1. 在可以访问互联网的机器上拉取镜像或构建您自己的镜像(假设您在当前目录中有定义容器的 Dockerfile)

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

    $ docker save --output mysql-5.7.30.tar mysql:5.7.30
    $ docker save --output app-1.0.tar app:1.0
    
  3. 复制文件到target机器

  4. 将 .tar 文件加载到 docker

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

参见:

有关持久化数据,请参阅: