Во-первых, я не знаю, связана ли эта проблема с Кафкой или с Docker ... Я ладья ie по обеим темам. Но я предполагаю, что это скорее проблема Docker, чем проблема Кафки (на самом деле это будет моей проблемой, не понимая ни того, ни другого…).
Я установил Docker на Raspberry 4 и создал Docker картинок для Кафки и для Zookeeper; Я должен был создать их сам, потому что 64-битный Raspi не был поддержан ни одним из существующих образов (по крайней мере, я не мог никого найти). Но я заставил их работать.
Затем я реализовал пример Kafka Streams (Wordcount) из документации Kafka; он работает нормально, считая слова во всех текстах, которые вы вводите в него sh, сохраняя номера всех предыдущих прогонов. Это как-то ожидается; по крайней мере, так описано в этой документации.
Так что после некоторых тестовых прогонов я хотел сбросить все значение целиком.
Я подумал, что самый простой способ получить это - отключить * Контейнеры 1037 *, удалите подключенные папки на хосте и начните сначала.
Но это не работает: счетчики слов все еще там! Значение слова начиналось не с 0…
Хорошо, следующий ход: не только удаление контейнеров, но и перестройка изображений! И Зоокейпер, и Кафка, конечно!
Без разницы! Количество слов из всех предыдущих прогонов было сохранено.
Использование docker system prune --volumes
также не имело никакого значения ...
Из моего ограниченного понимания Docker я предположил, что любые данные времени выполнения хранятся в контейнер или в смонтированных папках (томах). Поэтому, когда я удаляю контейнеры и папки на хосте Docker, которые были смонтированы контейнерами, я ожидаю, что любой статус исчезнет.
Очевидно, что нет ... поэтому я пропустил что-то важное здесь, скорее всего с Docker.
Файл составления docker, который я использовал:
version: '3'
services:
zookeeper:
image: tquadrat/zookeeper:latest
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
- "8080:8080"
volumes:
- /data/zookeeper/config:/config
- /data/zookeeper/data:/data
- /data/zookeeper/datalog:/datalog
- /data/zookeeper/logs:/logs
environment:
ZOO_SERVERS: "server.1=zookeeper:2888:3888;2181"
restart: always
kafka:
image: tquadrat/kafka:latest
depends_on:
- zookeeper
ports:
- "9091:9091"
volumes:
- /data/kafka/config:/config
- /data/kafka/logs:/logs
environment:
KAFKA_LISTENERS: "INTERNAL://kafka:29091,EXTERNAL://:9091"
KAFKA_ADVERTISED_LISTENERS: "INTERNAL://kafka:29091,EXTERNAL://TCON-PI4003:9091"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "INTERNAL"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DELETE_TOPIC_ENABLE: "true"
restart: always
Файл сценария, который я использовал для очистки подключенных папок:
#!/bin/sh
set -eux
DATA="/data"
KAFKA_DATA="$DATA/kafka"
ZOOKEEPER_DATA="$DATA/zookeeper"
sudo rm -R "$KAFKA_DATA"
sudo rm -R "$ZOOKEEPER_DATA"
mkdir -p "$KAFKA_DATA/config" "$KAFKA_DATA/logs"
mkdir -p "$ZOOKEEPER_DATA/config" "$ZOOKEEPER_DATA/data" "$ZOOKEEPER_DATA/datalog" "$ZOOKEEPER_DATA/logs"
Есть идеи?