【问题标题】:Multiple docker instance for multiple client多个客户端的多个 docker 实例
【发布时间】:2019-03-11 08:42:09
【问题描述】:

我正在对一些在 Linux 环境中运行且目前拥有 10 多个客户端的遗留应用程序(Web + 服务 + C++ 应用程序)进行容器化。

我可以从 Docker 设置和运行应用程序(C++ 应用程序)。由于应用程序将读取一些属性文件,这些文件对于不同的客户端会有所不同。所以我尝试挂载驱动器以在 Docker 之外共享数据(运行时某些文件可能已更改)。

但我最关心的是如何为运行时(内存状态)不同的不同客户端运行单个容器? (应用程序将永远运行,直到有人杀死/停止它)。

我需要为 n 个客户端运行 n 个容器吗?

Docker swarm/Kubernetes 对这种情况有一些属性吗?

ech 客户端会获得自己的专用容器吗?

您能否建议针对此类场景进行一些进一步的阅读/学习?

对于数据库——因为每个客户端都有不同的数据——应该使用不同的数据库?

【问题讨论】:

    标签: docker deployment


    【解决方案1】:

    您可以通过为容器提供唯一的名称和环境变量来隔离容器。

    例子:

    docker run --name client1 --env-file ./client1.env your-image-name-here
    

    使用这种方法,您可以分别拥有对每个上下文都是唯一的隔离环境和配置。

    您需要为 N 个客户端提供 N 个容器。但是您可以对 N 个容器使用相同的图像。因此,每个客户一个容器,每个容器将由它自己的唯一名称和环境变量标识。

    【讨论】:

      【解决方案2】:

      你的基本需求听起来像是:

      • 每个人都可以使用相同的应用程序
      • 每个客户端一个配置
      • 每个客户端一个数据库

      第一点很容易解决:“相同的应用程序 = 相同的图像”。

      然后,您需要对应用程序进行个性化设置和 DB 路径。 如果您想将数据库容器化,问题将是相同的,假设您有一个数据库 url(它可能是一个容器:没那么重要)。

      有多种选项可以个性化您的应用程序:

      • 从通用映像继承并在所需数量的映像中拒绝它...严重影响可维护性
      • 通过“docker-compose”添加自定义,更易于阅读、编写和维护!

      如果每个客户端一个实例没问题,只需为每个客户端使用一个 docker-compose。 如果您碰巧需要更多,请使用 swarm 模式(您也可以在一个实例中使用 swarm 模式)。

      在这两种情况下,您都需要一个 docker-compose(实际上您并不真正需要它,因为您可以通过命令行执行所有操作,但对我的 opov 来说维护起来不太容易,也不太容易解释!)。

      它可能看起来像这样:

      version: "3.7"
      
      my-service:
         image: your/common/image:1.0
         volume:
            - /a/path/from/host/with/confs:/a/path/to/container/conf/dir # will replace content there!
         environment:
            - "DB_URL=my-cny.denver.com:3121/db_client" # can vary or be the same if DB_NAME vary instead
            - "DB_NAME=my-cny.denver.com:3121/db_client_1" #vary the name of the DB
            - "DB_PSSWD=toto"
       ...
      

      有些事情你不应该做,比如在这里写清楚的 PWD,但这只是一个例子。

      对于配置文件和敏感数据有更好的机制,应该通过“config”和“秘密”mecanisms 进行管理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        • 2020-08-13
        相关资源
        最近更新 更多