如何将Docker映像交付给客户端?

kan*_*ane 5 docker

客户希望交付doc​​ker应用。关于最佳做法,我有两个问题。

首先,我需要交付一个包含tomcat,一个webapp,一个数据库和一些表的应用程序。我知道如何设置tomcat和数据库,但是您如何处理它们的资产(即webapp和表)?您是否将它们包括在映像中,然后将其推送到hub.docker.com?如果webapp和数据库表是专有的,您将如何处理?您是否创建私人图像并以某种方式共享它?

其次,随着应用程序的运行,数据库表可能会更改。据我了解(并经过测试),docker容器是无状态的,因此一旦停止,数据将被重置。如何在两次重启之间保持相同的状态?我知道您可以在容器和主机之间映射文件夹,但是我真的要运送一个单独的包含数据的数据库文件夹,并让docker容器映射它吗?这里的最佳做法是什么?

提前致谢

编辑首先,感谢所有回复的人。@RicardoBranco和@kstromeiraos都对如何分发图像有很好的建议。我不知道客户喜欢哪一种,尽管我想给你们两个都打勾,所以SO只允许我给一个答案。因此,我对你们俩都表示支持,并让互联网决定从长远来看哪个答案占上风。

其次,我是个白痴。我当时使用“ docker run”命令“启动”我的容器,现在我意识到正在创建一个新的容器,这使我相信自己丢失了上一个会话中的所有数据。直到我意识到您应该调用“ docker start”来“启动”一个容器后,我才意识到自己在理解上的错误。

谢谢你们

Ric*_*nco 6

  1. 您可以在 Docker Hub(或 Amazon EC2 容器注册表)中创建私有存储库,或者使用 TLS 和某种形式的用户身份验证(使用 TLS 客户端证书和/或 HTTP 基本身份验证)自行设置 Docker 注册表:

https://docs.docker.com/registry/

  1. 当容器停止时,不会重置数据,只有当容器(和关联的卷)被删除时才会重置数据。容器是对数据(卷)进行操作的代码的临时实例。


kst*_*aos 6

  1. 您有两种选择来分发图像。

  2. 您应该有一个可以保留数据库数据的卷。您可以映射主机目录。

    要备份卷,请看一下这个有用的工具,它可以使您做到这一点。https://github.com/discordianfish/docker-backup