【问题标题】:Swisscom Application Cloud: Docker volumesSwisscom 应用程序云:Docker 卷
【发布时间】:2018-01-26 12:00:26
【问题描述】:

由于 Swisscom 上的 volume service is not yet available 是否可以使用 Swisscom 云代工厂上的 docker 做这样的事情:

docker run -d --volume /mydata --name elastic-shared alpine echo My Data Container
docker run -d --volumes-from elastic-shared --name myelastic elasticsearch:latest

一个容器将用作另一个运行 elasticseach 作为持久数据存储的容器的卷。

【问题讨论】:

  • 你想达到什么目的?
  • 与一个elasticsearch容器共享一个--volume,能够将数据从不可变的elasticsearch容器存储到定义的--volume
  • 但是为什么,为什么?你的最终目标是什么?将 elasticsearch 作为应用推送并推送另一个写入它的应用,还是什么?
  • 由于 elasticsearch 使用文件系统来存储它的数据,我需要一个地方将它保存在容器之外,以便在容器重启后保存它。我还需要使用带有 JDBC 插件的 logstash,它使用文件系统来存储它的状态。我考虑过使用外部文件系统服务,但 swisscom 上还没有。
  • 第二个想法是有一个 docker 应用程序,它只用于它的卷和其他容器在其中存储数据。此容器永远不会重新启动。所以我会有一个带有卷的 docker 应用程序,其他带有 elasticsearch 的 docker 应用程序将使用该卷来存储数据,并且当 elastciserach docker 重新启动时,数据不会丢失。

标签: swisscomdev


【解决方案1】:

好的,我明白你在做什么,但它有一个主要问题:所有应用程序容器都必须是无状态的。只是说“我永远不会重新启动用作持久卷的应用程序”并不会使其持久。您的应用可以(并且将会!)出于各种原因随时由 CF 重新安排或重新启动。

这也是应用程序之间没有卷共享的主要原因之一,这意味着不,没有相当于 docker 的 --volumes-from 的 CF。

显然,这也意味着以将其状态存储在本地文件系统中的方式使用 logstash 是一个坏主意。

由于 Swisscom 应用程序云上没有可用的 NFS 卷,您最好的选择可能是以某种方式将状态存储在 S3 中,但我不确定是否可以实现(存储快照除外)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2019-09-06
    • 2023-03-16
    • 2018-08-03
    • 1970-01-01
    • 2019-10-10
    • 2020-01-04
    相关资源
    最近更新 更多