【问题标题】:How to configure docker-compose in order to mount disk to folder , instead on local disk如何配置 docker-compose 以便将磁盘挂载到文件夹,而不是本地磁盘
【发布时间】:2019-11-06 07:23:53
【问题描述】:

我们在 Docker 上使用单节点基本部署,包括以下服务

kafka
schemaregistry
zookeeper

示例:

# docker-compose ps
               Name                           Command            State                     Ports
-------------------------------------------------------------------------------------------------------------------
control-center                       /etc/confluent/docker/run   Up      0.0.0.0:9021->9021/tcp
kafka-single-node_kafka_1            /etc/confluent/docker/run   Up      0.0.0.0:9092->9092/tcp
kafka-single-node_schemaregistry_1   /etc/confluent/docker/run   Up      0.0.0.0:8081->8081/tcp
kafka-single-node_zookeeper_1        /etc/confluent/docker/run   Up      0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp

我们根据-https://docs.confluent.io/5.0.0/installation/docker/docs/installation/single-node-client.html在容器上创建服务

我们在 kafka 机器上创建主题,我们打算将数据注入主题分区

主题将在路径上的 kafka docker 容器机器上创建 - /var/lib/kafka/data

由于那台kafka docker机器上的/var只有100G,我们希望至少使用1T的大小

因此我们计划在操作系统中添加一个新磁盘 1T Byte (1000G)

一旦我们添加了巨大的磁盘,第二个动作是将磁盘挂载到/var/lib/kafka/data(所以数据文件夹将是1T大小)

但问题是 - 应该设置哪些 docker 配置文件和参数?

我们正在使用docker-compose.yml,其中包括以下用于 kafka 的部分

kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

【问题讨论】:

  • 是否安装了任何卷?看起来 docker-compose 还没有显示任何卷。如果是这样,容器内的数据将丢失,如果容器消失了。
  • 据我所知目前没有
  • 数据重要吗?或者,如果你丢了,也可以。
  • 这是kafka机器!!,数据很重要
  • 这个设置听起来不太安全,我不得不说。单节点,没有数据冗余,使用 docker compose 运行应用程序,还没有卷。如果发生任何崩溃,数据可能会损坏,那么无法保证挽救数据。我建议,你设置一个更好的环境、一个集群、有足够空间的卷,然后复制数据。

标签: docker apache-kafka docker-compose


【解决方案1】:

首先,您将磁盘挂载到 linux 主机上 /etc/fstab 中的目录,然后使用卷 - https://docs.docker.com/compose/compose-file/#volumes

kafka:
    image: confluentinc/cp-kafka:latest
    volumes: 
        - /some/path:/var/lib/kafka/data

【讨论】:

  • 亲爱的蟋蟀非常感谢你,但是请教一个重要的问题,如果 kafka docker 容器出现故障怎么办? ,挂载的文件夹中有什么?作为 /some/path ? (为你 +1)
  • 我问的另一个问题,假设我想将 kafka 配置文件导出为 - server.properties 从 kafka 容器外部,例如到 /var/kafka/server.properties(操作系统本身)。那你有什么建议呢?
  • 您可以添加多个卷。不过,Confluent 容器的 env-vars 将覆盖外部配置。如果容器在同一主机上重新启动,则需要挂载相同的卷。
  • 关于 Confluent 容器的 -env-vars ,你能给我举个例子 - 一步一步(因为我是 docker 世界的新手)
  • 你也可以回答下面的话题-stackoverflow.com/questions/58721206/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 2020-11-27
  • 1970-01-01
  • 2014-08-10
  • 2019-08-28
相关资源
最近更新 更多