docker - 如何配置 docker-compose 以便将磁盘挂载到文件夹,而不是本地磁盘

标签 docker apache-kafka docker-compose

我们在 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 机器上创建主题,我们打算将数据注入(inject)主题分区

主题将在路径上的 kafka docker 容器机器上创建 - /var/lib/kafka/data
由于/var在那台kafka docker机器上只有100G,我们希望至少使用1T的大小

因此,我们计划向操作系统添加一个 1T 字节(1000G)的新磁盘

一旦我们添加了巨大的磁盘,第二个 Action 就是将磁盘挂载到 /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

最佳答案

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

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

关于docker - 如何配置 docker-compose 以便将磁盘挂载到文件夹,而不是本地磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719045/

相关文章:

docker - 我应该在 Kubernetes 前面添加一个 DMZ 吗?

scala - 如何将 Scala API for Kafka Streams 定义为 build.sbt 中的依赖项?

ssl - GCP Dataproc - 无法构建 kafka 消费者,无法加载 JKS 类型的 SSL keystore dataproc.jks

go - 使用 golang 将 DSA key 解析为 tls 配置对象

docker - 连接到在 Docker 容器中以哨兵模式运行的 Redis 主节点时出现问题

python - 如何从 Apache Airflow 使用 DockerOperator

docker - 如何使用 nvidia-docker 在 docker swarm 中创建服务

php - 如何在docker中正确配置supervisor

go - 用户 : Current not implemented on linux/amd64 with golang using docker scratch

mysql - django无法访问mysql docker compose