Jusqu'à ce que j'essaye d'exécuter Apache Kafka avec une image docker

1.Tout d'abord

Apache Kafka est une file d'attente de messages distribuée hautement évolutive. Une file d'attente de messages est un middleware qui intervient dans le transfert des données entre les systèmes et conserve temporairement (les files d'attente) les données.

Cette fois, nous utiliserons l'image Docker d'Apache kafka et exécuterons kafka dans l'environnement local. La version d'Apache kafka utilisée est la 2.6.0.

2. Référence (environnement d'exécution)

2-1. Docker est installé
$ docker -v
Docker version 19.03.6, build 369ce74a3c
2-2. Spécifications

J'ai utilisé une machine avec un total de 8 Go de mémoire, mais cela fonctionne bien même avec environ 4 Go.

$ cat /etc/issue
Ubuntu 18.04.2 LTS
$ cat /proc/meminfo | grep Mem
MemTotal:        8168284 kB
MemFree:         5540948 kB
MemAvailable:    7472660 kB

3. Construire / démarrer le conteneur

De nombreuses images kafka Docker sont disponibles sur le hub Docker. Cette fois, j'utilise l'image Docker préparée ici.

$ docker run --name my-kafka blueskyareahm/kafka:2.6.0

Le conteneur démarre après le téléchargement de l'image, comme indiqué ci-dessous.

Unable to find image 'blueskyareahm/kafka:2.6.0' locally
2.6.0: Pulling from blueskyareahm/kafka
75f829a71a1c: Already exists 
455e7974a143: Pull complete 
a439c4ff44d0: Pull complete 
b9eb8968940e: Pull complete 
e6979812c85a: Pull complete 
7812677cc867: Pull complete 
ceacbc38a4c6: Pull complete 
70319b3a888f: Pull complete 
3fb4c3130215: Pull complete 
68dc00f6ba7c: Pull complete 
Digest: sha256:802f5d87bfb51fd5af66853a345e0ed65de8acc2f3fd61c259def2d6c05f63d6
Status: Downloaded newer image for blueskyareahm/kafka:2.6.0
/usr/lib/python2.7/site-packages/supervisor-4.2.1-py2.7.egg/supervisor/options.py:474: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  'Supervisord is running as root and it is searching '
2020-10-17 04:52:25,057 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2020-10-17 04:52:25,068 INFO RPC interface 'supervisor' initialized
2020-10-17 04:52:25,069 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2020-10-17 04:52:25,069 INFO supervisord started with pid 1
2020-10-17 04:52:26,076 INFO spawned: 'zookeeper' with pid 9
2020-10-17 04:52:26,082 INFO spawned: 'kafka' with pid 10
2020-10-17 04:52:27,091 INFO success: zookeeper entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-10-17 04:52:27,091 INFO success: kafka entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

4. Création de la rubrique Kafka

Ouvrez une autre console et exécutez la commande suivante: Cette commande crée la rubrique Kafka. (Ici, le nom est "topic1") Kafka échange des messages via Topic.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic1

Si le message suivant s'affiche, c'est OK.

Created topic topic1.

5. Début de Kafka Producer

Exécutez la commande suivante. Cette commande démarre Kafka Producer. Il sera prêt à accepter les messages de manière interactive, comme indiqué ci-dessous.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic1
>

6. Démarrez Kafka Consumer

Ouvrez une autre console et exécutez la commande suivante: Cette commande démarre Kafka Consumer. Lorsque je l'exécute, rien ne s'affiche, mais il est prêt à accepter des messages.

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic1

7. Essayez d'envoyer un message de Kafka Producer

Revenez à la console où Kafka Producer est en cours d'exécution et essayez de taper un message.

Côté producteur

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic1
>Hello Kafka!
>

Ensuite, le même message que celui saisi du côté Kafka Consumer sera affiché. Côté consommateur

$ docker exec -it my-kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic1
Hello Kafka!

Recommended Posts

Jusqu'à ce que j'essaye d'exécuter Apache Kafka avec une image docker
Essayez d'exécuter cloudera manager avec docker
Redémarrez Apache avec l'image php-apache de Docker
Jusqu'à ce que vous exécutiez apache avec ubuntu sur docker
Accédez à Apache Kafka avec Micronaut
Jusqu'à ce que vous exécutiez Quarkus et que vous exécutiez l'image docker sur Amazon ECS
docker-compose.yml lorsque vous voulez garder mysql en cours d'exécution avec docker
[GCP] Jusqu'à ce que vous transmettiez l'image Docker locale à Container Registry
[Linux] Démarrer le conteneur Apache avec Docker
Essayez d'exécuter MySql et Blazor avec docker-compose
Serveur proxy par squid en utilisant l'image docker
Autoriser la publication d'images avec [Docker + WordPress + MySQL]
Image volée lors de la mise à jour de Docker avec WSL2
Essayez de créer Express + PostgreSQL + Sequelize avec Docker [Partie 2]
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
Garder un conteneur Docker en cours d'exécution sans aucun processus résident en cours d'exécution
Comment donner votre image à quelqu'un avec Docker
Mettre à jour l'image du conteneur avec KUSANAGI s'exécute sur Docker
Jusqu'à ce que vous exécutiez l'exemple de code Apache Velocity
Essayez de créer Express + PostgreSQL + Sequelize avec Docker [Partie 1]
Lancer l'image Docker avec les données initiales injectées avec docker-compose
Essayez d'utiliser un autre conteneur de servlet Jetty avec Docker