Как с помощью Docker запустить Kafka?
Преимущество запуска Kafka на Docker заключается в том, что этот метод будет работать на всех операционных системах, включая Mac, Windows и Linux. Он также позволяет легко переключать версии Kafka, просто обновляя базовый файл docker-compose.
Обязательные условия: установка Docker & Docker Compose
Docker
Этапы установки Docker Desktop:
- Установка на Mac.
- Установка на Windows.
- Установка на Linux (выберите свой дистрибутив в меню, находящемся слева).
Docker Compose
- Mac и Windows: Если Вы установили Docker Desktop, Docker Compose установлен по умолчанию, так как входит в его состав.
- Linux: следуйте данной инструкции
Как запустить Kafka с помощью Docker?
Docker Compose - это инструмент для определения и запуска многоконтейнерных Docker-приложений. Поскольку мы будем запускать каждое приложение из сервисов Kafka, например, Zookeeper, и т. д., в отдельном контейнере Docker, docker-compose - идеальное решение.
Чтобы использовать docker-compose, мы должны определить сервисы, составляющие наше развертывание Kafka, в файле docker-compose.yml, чтобы их можно было запускать вместе в изолированной среде.
Перейдите к проекту на GitHub - https://github.com/conduktor/kafka-stack-docker-compose и клонируйте или загрузите проект. В нем есть файлы docker-compose.
$gitclone https://github.com/conduktor/kafka-stack-docker-compose.gitCloning into'kafka-stack-docker-compose'...remote: Enumerating objects:551, done.remote: Counting objects:100%(219/219), done.remote: Compressing objects:100%(125/125), done.remote: Total551 (delta145), reused140 (delta83), pack-reused332Receiving objects:100%(551/551),110.29KiB| 15.76MiB/s, done.Resolving deltas:100%(375/375), done.Затем перейдите в папкуkafka-stack-docker-composeи пролистайте файлы.$ls-ltotal60-rw-rw-r--1ec2-user ec2-user4719Nov16 11:37 full-stack.yml-rw-rw-r--1ec2-user ec2-user11345Nov16 11:37 LICENSE-rw-rw-r--1ec2-user ec2-user8100Nov16 11:37 README.md-rwxrwxr-x1ec2-user ec2-user2150Nov16 11:37 test.sh-rw-rw-r--1ec2-user ec2-user4759Nov16 11:37 zk-multiple-kafka-multiple-schema-registry.yml-rw-rw-r--1ec2-user ec2-user4209Nov16 11:37 zk-multiple-kafka-multiple.yml-rw-rw-r--1ec2-user ec2-user2728Nov16 11:37 zk-multiple-kafka-single.yml-rw-rw-r--1ec2-user ec2-user2946Nov16 11:37 zk-single-kafka-multiple.yml-rw-rw-r--1ec2-user ec2-user1604Nov16 11:37 zk-single-kafka-single.yml
Обратите внимание на файл zk-single-kafka-single.yml. Как следует из названия, мы будем использовать его для запуска кластера Kafka с одним Zookeeper и одним брокером.
Теперь используйте эту команду для запуска кластера Kafka с одним Zookeeper и одним брокером Kafka. Добавьте флаг –d для того, чтобы запустить ее в фоновом режиме.
docker-compose -f zk-single-kafka-single.yml up -d
Убедитесь в том, что обе службы запущены:
$ docker-compose -f zk-single-kafka-single.ymlpsName Command State Ports-------------------------------------------------------------------------------------------kafka1 /etc/confluent/docker/run Up0.0.0.0:9092->9092/tcp,0.0.0.0:9999->9999/tcpzoo1 /etc/confluent/docker/run Up0.0.0.0:2181->2181/tcp,2888/tcp,3888/tcp
Kafka будет запущен на Вашем компьютере по адресу localhost:9092
Выполнение команд для Kafka, работающем на Docker
Для запуска команды для Kafka в Docker есть два возможных варианта:
- Выполнение команды непосредственно из Docker-контейнера Kafka (с помощью docker exec).
- Запуск команд из ОС (сначала необходимо установить двоичные файлы)
Вариант 1: Выполнение команды непосредственно из Docker-контейнера Kafka
dockerexec-it kafka1 /bin/bash
Затем, находясь внутри контейнера, Вы можете запустить некоторые команды Kafka (уже без .sh)
[appuser@kafka1 ~]$kafka-topics--version6.2.1-ccs(Commit:fa4bec046a2df3a6)
Вариант 2: Выполнение команд за пределами контейнера
Для этого в системе необходимо установить двоичные файлы Java и Kafka:
- Инструкция для Mac (следуйте всем пунктам документа, кроме запуска Kafka и Zookeeper)
- Инструкция для Linux (следуйте всем пунктам документа, кроме запуска Kafka и Zookeeper)
- Инструкция для Windows (следуйте всем пунктам документа, кроме запуска Kafka и Zookeeper)
После установки двоичных файлов Kafka Вы сможете выполнить свою первую команду Kafka, например kafka-topics.sh.
Остановка работы Kafka в Docker
Теперь, когда мы проверили установку, мы можем остановить службы, остановив соответствующие контейнеры:
$ docker-compose -f zk-single-kafka-single.yml stopStopping kafka1...doneStopping zoo1...done
Чтобы полностью удалить все ресурсы, включая контейнеры, вместо stop используйте down:
$ docker-compose -f zk-single-kafka-single.yml downRemoving kafka1...doneRemoving zoo1...doneRemoving network kafka-stack-docker-compose_default




