Sign inSign up

grumpydocker/kafka

By grumpydocker

•Updated almost 11 years ago

Apache Kafka

Image
0

596

grumpydocker/kafka repository overview

⁠Dockerized Kafka

The following replacements will take place based on ENV_VAR / kafka server property, check the Kafka documentation section 3.1⁠ for their full meaning.

The replacements will take place on the default Kafka distribution conf/server.properties file, for example⁠

⁠* REQUIRED *
ENV VARKafka server property
KAFKA_BROKER_IDbroker.id
KAFKA_LOG_DIRSlog.dirs
KAFKA_ZK_CONNECTzookeeper.connect
⁠* OPTIONAL, SET BY DEFAULT *
ENV VARKafka server propertyDefault
KAFKA_PORTport9092
KAFKA_NUM_PARTITIONSnum.partitions1
KAFKA_AUTO_CREATE_TOPICS_ENABLEauto.create.topics.enablefalse
KAFKA_DEFAULT_REPLICATION_FACTORdefault.replication.factor1
KAFKA_MESSAGE_MAX_BYTESmessage.max.bytes20971520
KAFKA_REPLICA_FETCH_MAX_BYTESreplica.fetch.max.bytes20971520
⁠* OPTIONAL, NOT SET BY DEFAULT *
ENV VARKafka server propertyDefault
KAFKA_ADVERTISED_HOST_NAMEadvertised.host.namekafka1
KAFKA_ADVERTISED_LISTENERSadvertised.listeners
KAFKA_ADVERTISED_PORTadvertised.port9092
KAFKA_AUTHORIZER_CLASS_NAMEauthorizer.class.name
KAFKA_AUTO_LEADER_REBALANCE_ENABLEauto.leader.rebalance.enabletrue
KAFKA_BACKGROUND_THREADSbackground.threads10
KAFKA_COMPRESSION_TYPEcompression.typeproducer
KAFKA_CONNECTIONS_MAX_IDLE_MSconnections.max.idle.ms600000
KAFKA_CONTROLLED_SHUTDOWN_ENABLEcontrolled.shutdown.enabletrue
KAFKA_CONTROLLED_SHUTDOWN_MAX_RETRIEScontrolled.shutdown.max.retries3
KAFKA_CONTROLLED_SHUTDOWN_RETRY_BACKOFF_MScontrolled.shutdown.retry.backoff.ms5000
KAFKA_CONTROLLER_SOCKET_TIMEOUT_MScontroller.socket.timeout.ms30000
KAFKA_DELETE_TOPIC_ENABLEdelete.topic.enablefalse
KAFKA_FETCH_PURGATORY_PURGE_INTERVAL_REQUESTSfetch.purgatory.purge.interval.requests1000
KAFKA_GROUP_MAX_SESSION_TIMEOUT_MSgroup.max.session.timeout.ms30000
KAFKA_GROUP_MIN_SESSION_TIMEOUT_MSgroup.min.session.timeout.ms6000
KAFKA_HOST_NAMEhost.name0.0.0.0
KAFKA_INTER_BROKER_PROTOCOL_VERSIONinter.broker.protocol.version0.9.0.X
KAFKA_LISTENERSlistenersPLAINTEXT://:9092
KAFKA_LOG_CLEANER_BACKOFF_MSlog.cleaner.backoff.ms15000
KAFKA_LOG_CLEANER_DEDUPE_BUFFER_SIZElog.cleaner.dedupe.buffer.size524288000
KAFKA_LOG_CLEANER_DELETE_RETENTION_MSlog.cleaner.delete.retention.ms86400000
KAFKA_LOG_CLEANER_ENABLElog.cleaner.enablefalse
KAFKA_LOG_CLEANER_ENABLElog.cleaner.enablefalse
KAFKA_LOG_CLEANER_IO_BUFFER_LOAD_FACTORlog.cleaner.io.buffer.load.factor0.9
KAFKA_LOG_CLEANER_IO_BUFFER_SIZElog.cleaner.io.buffer.size524288
KAFKA_LOG_CLEANER_IO_MAX_BYTES_PER_SECONDlog.cleaner.io.max.bytes.per.second1.7976931348623157E308
KAFKA_LOG_CLEANER_MIN_CLEANABLE_RATIOlog.cleaner.min.cleanable.ratio0.5
KAFKA_LOG_CLEANER_THREADSlog.cleaner.threads1
KAFKA_LOG_CLEANUP_POLICYlog.cleanup.policydelete
KAFKA_LOG_FLUSH_INTERVAL_MESSAGESlog.flush.interval.messages9223372036854775807
KAFKA_LOG_FLUSH_INTERVAL_MSlog.flush.interval.ms
KAFKA_LOG_FLUSH_OFFSET_CHECKPOINT_INTERVAL_MSlog.flush.offset.checkpoint.interval.ms60000
KAFKA_LOG_FLUSH_SCHEDULER_INTERVAL_MSlog.flush.scheduler.interval.ms9223372036854775807
KAFKA_LOG_INDEX_INTERVAL_BYTESlog.index.interval.bytes4096
KAFKA_LOG_INDEX_SIZE_MAX_BYTESlog.index.size.max.bytes10485760
KAFKA_LOG_PREALLOCATElog.preallocatefalse
KAFKA_LOG_RETENTION_BYTESlog.retention.bytes-1
KAFKA_LOG_RETENTION_CHECK_INTERVAL_MSlog.retention.check.interval.ms300000
KAFKA_LOG_RETENTION_CHECK_INTERVAL_MSlog.retention.check.interval.ms300000
KAFKA_LOG_RETENTION_HOURSlog.retention.hours168
KAFKA_LOG_RETENTION_MINUTESlog.retention.minutes
KAFKA_LOG_RETENTION_MSlog.retention.ms
KAFKA_LOG_ROLL_HOURSlog.roll.hours168
KAFKA_LOG_ROLL_JITTER_HOURSlog.roll.jitter.hours0
KAFKA_LOG_ROLL_JITTER_MSlog.roll.jitter.ms
KAFKA_LOG_ROLL_MSlog.roll.ms
KAFKA_LOG_SEGMENT_BYTESlog.segment.bytes1073741824
KAFKA_LOG_SEGMENT_BYTESlog.segment.bytes1073741824
KAFKA_LOG_SEGMENT_DELETE_DELAY_MSlog.segment.delete.delay.ms60000
KAFKA_MAX_CONNECTIONS_PER_IP_OVERRIDESmax.connections.per.ip.overrides
KAFKA_MAX_CONNECTIONS_PER_IPmax.connections.per.ip2147483647
KAFKA_METRIC_REPORTERSmetric.reporters[]
KAFKA_METRICS_NUM_SAMPLESmetrics.num.samples2
KAFKA_METRICS_SAMPLE_WINDOW_MSmetrics.sample.window.ms30000
KAFKA_MIN_INSYNC_REPLICASmin.insync.replicas1
KAFKA_NUM_IO_THREADSnum.io.threads8
KAFKA_NUM_IO_THREADSnum.io.threads8
KAFKA_NUM_NETWORK_THREADSnum.network.threads3
KAFKA_NUM_NETWORK_THREADSnum.network.threads3
KAFKA_NUM_PARTITIONSnum.partitions1
KAFKA_NUM_RECOVERY_THREADS_PER_DATA_DIRnum.recovery.threads.per.data.dir1
KAFKA_NUM_RECOVERY_THREADS_PER_DATA_DIRnum.recovery.threads.per.data.dir1
KAFKA_NUM_REPLICA_FETCHERSnum.replica.fetchers1
KAFKA_OFFSET_METADATA_MAX_BYTESoffset.metadata.max.bytes4096
KAFKA_OFFSETS_COMMIT_REQUIRED_ACKSoffsets.commit.required.acks-1
KAFKA_OFFSETS_COMMIT_TIMEOUT_MSoffsets.commit.timeout.ms5000
KAFKA_OFFSETS_LOAD_BUFFER_SIZEoffsets.load.buffer.size5242880
KAFKA_OFFSETS_RETENTION_CHECK_INTERVAL_MSoffsets.retention.check.interval.ms600000
KAFKA_OFFSETS_RETENTION_MINUTESoffsets.retention.minutes1440
KAFKA_OFFSETS_TOPIC_COMPRESSION_CODECoffsets.topic.compression.codec0
KAFKA_OFFSETS_TOPIC_NUM_PARTITIONSoffsets.topic.num.partitions50
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTORoffsets.topic.replication.factor3
KAFKA_OFFSETS_TOPIC_SEGMENT_BYTESoffsets.topic.segment.bytes104857600
KAFKA_PRINCIPAL_BUILDER_CLASSprincipal.builder.classorg.apache.kafka.common.security.auth.DefaultPrincipalBuilder
KAFKA_PRODUCER_PURGATORY_PURGE_INTERVAL_REQUESTSproducer.purgatory.purge.interval.requests1000
KAFKA_QUEUED_MAX_REQUESTSqueued.max.requests500
KAFKA_QUOTA_CONSUMER_DEFAULTquota.consumer.default9223372036854775807
KAFKA_QUOTA_PRODUCER_DEFAULTquota.producer.default9223372036854775807
KAFKA_QUOTA_WINDOW_NUMquota.window.num11
KAFKA_QUOTA_WINDOW_SIZE_SECONDSquota.window.size.seconds1
KAFKA_REPLICA_FETCH_BACKOFF_MSreplica.fetch.backoff.ms1000
KAFKA_REPLICA_FETCH_MIN_BYTESreplica.fetch.min.bytes1
KAFKA_REPLICA_FETCH_WAIT_MAX_MSreplica.fetch.wait.max.ms500
KAFKA_REPLICA_HIGH_WATERMARK_CHECKPOINT_INTERVAL_MSreplica.high.watermark.checkpoint.interval.ms5000
KAFKA_REPLICA_LAG_TIME_MAX_MSreplica.lag.time.max.ms10000
KAFKA_REPLICA_SOCKET_RECEIVE_BUFFER_BYTESreplica.socket.receive.buffer.bytes65536
KAFKA_REPLICA_SOCKET_TIMEOUT_MSreplica.socket.timeout.ms30000
KAFKA_REQUEST_TIMEOUT_MSrequest.timeout.ms30000
KAFKA_RESERVED_BROKER_MAX_IDreserved.broker.max.id1000
KAFKA_SASL_KERBEROS_KINIT_CMDsasl.kerberos.kinit.cmd/usr/bin/kinit
KAFKA_SASL_KERBEROS_MIN_TIME_BEFORE_RELOGINsasl.kerberos.min.time.before.relogin60000
KAFKA_SASL_KERBEROS_PRINCIPAL_TO_LOCAL_RULESsasl.kerberos.principal.to.local.rules[DEFAULT]
KAFKA_SASL_KERBEROS_SERVICE_NAMEsasl.kerberos.service.name
KAFKA_SASL_KERBEROS_TICKET_RENEW_JITTERsasl.kerberos.ticket.renew.jitter0.05
KAFKA_SASL_KERBEROS_TICKET_RENEW_WINDOW_FACTORsasl.kerberos.ticket.renew.window.factor0.8
KAFKA_SECURITY_INTER_BROKER_PROTOCOLsecurity.inter.broker.protocolPLAINTEXT
KAFKA_SOCKET_RECEIVE_BUFFER_BYTESsocket.receive.buffer.bytes102400
KAFKA_SOCKET_RECEIVE_BUFFER_BYTESsocket.receive.buffer.bytes102400
KAFKA_SOCKET_REQUEST_MAX_BYTESsocket.request.max.bytes104857600
KAFKA_SOCKET_REQUEST_MAX_BYTESsocket.request.max.bytes104857600
KAFKA_SOCKET_SEND_BUFFER_BYTESsocket.send.buffer.bytes102400
KAFKA_SOCKET_SEND_BUFFER_BYTESsocket.send.buffer.bytes102400
KAFKA_SSL_CIPHER_SUITESssl.cipher.suites
KAFKA_SSL_CLIENT_AUTHssl.client.authnone
KAFKA_SSL_ENABLED_PROTOCOLSssl.enabled.protocols[TLSv1.2]
KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHMssl.endpoint.identification.algorithm
KAFKA_SSL_KEY_PASSWORDssl.key.password
KAFKA_SSL_KEYMANAGER_ALGORITHMssl.keymanager.algorithmSunX509
KAFKA_SSL_KEYSTORE_LOCATIONssl.keystore.location
KAFKA_SSL_KEYSTORE_PASSWORDssl.keystore.password
KAFKA_SSL_KEYSTORE_TYPEssl.keystore.typeJKS
KAFKA_SSL_PROTOCOLssl.protocolTLS
KAFKA_SSL_PROVIDERssl.provider
KAFKA_SSL_TRUSTMANAGER_ALGORITHMssl.trustmanager.algorithmPKIX
KAFKA_SSL_TRUSTSTORE_LOCATIONssl.truststore.location
KAFKA_SSL_TRUSTSTORE_PASSWORDssl.truststore.password
KAFKA_SSL_TRUSTSTORE_TYPEssl.truststore.typeJKS
KAFKA_UNCLEAN_LEADER_ELECTION_ENABLEunclean.leader.election.enabletrue
KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MSzookeeper.connection.timeout.ms
KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MSzookeeper.session.timeout.ms6000
KAFKA_ZOOKEEPER_SET_ACLzookeeper.set.aclfalse
KAFKA_ZOOKEEPER_SYNC_TIME_MSzookeeper.sync.time.ms2000
⁠Ports

9092

⁠Volumes

None by default, a volume per log dir should be created at runtime and specified via the KAFKA_LOG_DIRS environment variable as a CSV

⁠Examples

These examples assume a overlay network which provides DNS resolution across docker containers, such as Weave⁠

Run a three node Kafka cluster where zoo1, zoo2 and zoo3 are DNS resolvable hostnames of a ZooKeeper ensemble, using a "/kafka" ZooKeeper chroot

weave run -dt --name=kafka1 \
  -e KAFKA_BROKER_ID=0 \
  -e KAFKA_ZK_CONNECT=zoo1.weave.local:2181,zoo2.weave.local:2182,zoo3.weave.local:2183/kafka \
  -e KAFKA_LOG_DIRS=/logs1,/logs2 \
  -e KAFKA_PORT=9092 \
  -e KAFKA_ADVERTISED_HOST_NAME=kafka1.weave.local \
  -e KAFKA_ADVERTISED_PORT=9092 \
  -v /logs1 \
  -v /logs2 \
  -p :9092:9092 \
  kafka

weave run -dt --name=kafka2 \
  -e KAFKA_BROKER_ID=1 \
  -e KAFKA_ZK_CONNECT=zoo1.weave.local:2181,zoo2.weave.local:2182,zoo3.weave.local:2183/kafka \
  -e KAFKA_LOG_DIRS=/logs1,/logs2 \
  -e KAFKA_PORT=9093 \
  -e KAFKA_ADVERTISED_HOST_NAME=kafka2.weave.local \
  -e KAFKA_ADVERTISED_PORT=9093 \
  -v /logs1 \
  -v /logs2 \
  -p :9093:9093 \
  kafka

weave run -dt --name=kafka3 \
  -e KAFKA_BROKER_ID=2 \
  -e KAFKA_ZK_CONNECT=zoo1.weave.local:2181,zoo2.weave.local:2182,zoo3.weave.local:2183/kafka \
  -e KAFKA_LOG_DIRS=/logs1,/logs2 \
  -e KAFKA_PORT=9094 \
  -e KAFKA_ADVERTISED_HOST_NAME=kafka3.weave.local \
  -e KAFKA_ADVERTISED_PORT=9094 \
  -v /logs1 \
  -v /logs2 \
  -p :9094:9094 \
  kafka
⁠Topic Management

Create a topic

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-topics.sh --create --zookeeper zoo1.weave.local:2181/kafka --replication-factor 2 --partitions 1 --topic test

List topics

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-topics.sh --list --zookeeper zoo1.weave.local:2181/kafka

Describe all topics

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-topics.sh --describe --zookeeper zoo1.weave.local:2181/kafka

Describe a specific topic

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-topics.sh --describe --zookeeper zoo1.weave.local:2181/kafka --topic test

Run CLI producer (note this is the "new producer" and connects to the broker to get connection metadata, not ZooKeeper directly, thus no "/kafka")

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-console-producer.sh --broker-list kafka1.weave.local:9092 --topic test

Run CLI consumer

weave run -it --rm grumpydocker/kafka /kafka/bin/kafka-console-consumer.sh --zookeeper zoo1.weave.local:2181/kafka --topic test --from-beginning

Tag summary

Content type

Image

Digest

sha256:1284970c9…

Size

256 MB

Last updated

almost 11 years ago

docker pull grumpydocker/kafka