Skip to main content
Version: 22.3

Redpanda Quickstart

In this quickstart you'll use Docker Compose to spin up a Redpanda cluster with three brokers, produce to a topic and consume from a topic, and explore your cluster in Redpanda Console.

You can use this quickstart to evaluate Redpanda on your Linux, macOS, or Windows machine.

Redpanda in Docker is supported only for development and testing.

To deploy Redpanda in production, use one of the following environments:

Prerequisites

You need Docker Compose. For installation instructions, see the Docker Compose documentation.

To check if you have Docker Compose, run the following:

docker compose version

You should see the version of Docker Compose that's installed on your local machine.

Start Redpanda

  1. Copy and paste the following YAML content into a file named docker-compose.yml on your local filesystem.

    Reveal the YAML content
    docker-compose.yml
    ---
    version: "3.7"
    name: redpanda-quickstart
    networks:
    redpanda_network:
    driver: bridge
    volumes:
    redpanda-0: null
    redpanda-1: null
    redpanda-2: null
    services:
    redpanda-0:
    command:
    - redpanda
    - start
    - --kafka-addr
    - internal://0.0.0.0:9092,external://0.0.0.0:19092
    # use the internal addresses to connect to the Redpanda brokers'
    # from inside the same Docker network.
    #
    # use the external addresses to connect to the Redpanda brokers'
    # from outside the Docker network.
    #
    # address the broker advertises to clients that connect to the Kafka API.
    - --advertise-kafka-addr
    - internal://redpanda-0:9092,external://localhost:19092
    - --pandaproxy-addr
    - internal://0.0.0.0:8082,external://0.0.0.0:18082
    # address the broker advertises to clients that connect to PandaProxy.
    - --advertise-pandaproxy-addr
    - internal://redpanda-0:8082,external://localhost:18082
    - --schema-registry-addr
    - redpanda-0:8081
    # Redpanda brokers use the RPC API to communicate with eachother internally.
    - --rpc-addr
    - redpanda-0:33145
    - --advertise-rpc-addr
    - redpanda-0:33145
    # tells Seastar (the framework Redpanda uses under the hood) to use 1 core on the system.
    - --smp 1
    # the amount of memory to make available to Redpanda.
    - --memory 1G
    # the amount of memory that's left for the Seastar subsystem.
    # For development purposes this is set to 0.
    - --reserve-memory 0M
    # Redpanda won't assume it has all of the provisioned CPU
    # (to accommodate Docker resource limitations).
    - --overprovisioned
    # enable logs for debugging.
    - --default-log-level=debug
    image: docker.redpanda.com/vectorized/redpanda:v22.3.11
    container_name: redpanda-0
    volumes:
    - redpanda-0:/var/lib/redpanda/data
    networks:
    - redpanda_network
    ports:
    - 18081:8081
    - 18082:8082
    - 19092:9092
    - 19644:9644
    redpanda-1:
    command:
    - redpanda
    - start
    - --kafka-addr
    - internal://0.0.0.0:9092,external://0.0.0.0:29092
    - --advertise-kafka-addr
    - internal://redpanda-1:9092,external://localhost:29092
    - --pandaproxy-addr
    - internal://0.0.0.0:8082,external://0.0.0.0:28082
    - --advertise-pandaproxy-addr
    - internal://redpanda-1:8082,external://localhost:28082
    - --schema-registry-addr
    - redpanda-1:8081
    - --rpc-addr
    - redpanda-1:33145
    - --advertise-rpc-addr
    - redpanda-1:33145
    - --smp 1
    - --memory 1G
    - --reserve-memory 0M
    - --overprovisioned
    - --default-log-level=debug
    - --seeds redpanda-0:33145
    image: docker.redpanda.com/vectorized/redpanda:v22.3.11
    container_name: redpanda-1
    volumes:
    - redpanda-1:/var/lib/redpanda/data
    networks:
    - redpanda_network
    ports:
    - 28081:8081
    - 28082:8082
    - 29092:9092
    - 29644:9644
    depends_on:
    - redpanda-0
    redpanda-2:
    command:
    - redpanda
    - start
    - --kafka-addr
    - internal://0.0.0.0:9092,external://0.0.0.0:39092
    - --advertise-kafka-addr
    - internal://redpanda-2:9092,external://localhost:39092
    - --pandaproxy-addr
    - internal://0.0.0.0:8082,external://0.0.0.0:38082
    - --advertise-pandaproxy-addr
    - internal://redpanda-2:8082,external://localhost:38082
    - --schema-registry-addr
    - redpanda-2:8081
    - --rpc-addr
    - redpanda-2:33145
    - --advertise-rpc-addr
    - redpanda-2:33145
    - --smp 1
    - --memory 1G
    - --reserve-memory 0M
    - --overprovisioned
    - --default-log-level=debug
    - --seeds redpanda-0:33145
    image: docker.redpanda.com/vectorized/redpanda:v22.3.11
    container_name: redpanda-2
    volumes:
    - redpanda-2:/var/lib/redpanda/data
    networks:
    - redpanda_network
    ports:
    - 38081:8081
    - 38082:8082
    - 39092:9092
    - 39644:9644
    depends_on:
    - redpanda-0
    console:
    container_name: redpanda-console
    image: docker.redpanda.com/vectorized/console:v2.1.1
    networks:
    - redpanda_network
    entrypoint: /bin/sh
    command: -c 'echo "$$CONSOLE_CONFIG_FILE" > /tmp/config.yml; /app/console'
    environment:
    CONFIG_FILEPATH: /tmp/config.yml
    CONSOLE_CONFIG_FILE: |
    kafka:
    brokers: ["redpanda-0:9092"]
    schemaRegistry:
    enabled: true
    urls: ["http://redpanda-0:8081"]
    redpanda:
    adminApi:
    enabled: true
    urls: ["http://redpanda-0:9644"]
    ports:
    - 8080:8080
    depends_on:
    - redpanda-0
  2. Run the following in the directory where you saved the docker-compose.yml file:

    docker compose up -d
    Example output
    [+] Running 5/5
    ⠿ Network redpanda_network Created 0.0s
    ⠿ Container redpanda-0 Started 0.3s
    ⠿ Container redpanda-console Started 0.6s
    ⠿ Container redpanda-1 Started 0.7s
    ⠿ Container redpanda-2 Started 0.7s

Start streaming

Each Redpanda broker comes with rpk, which is a CLI tool for connecting to and interacting with Redpanda brokers. You can use rpk inside one of the Redpanda broker's Docker containers to create a topic, produce messages to it, and consume messages from it.

  1. Get information about the cluster.

    docker exec -it redpanda-0 rpk cluster info
    Example output
    BROKERS
    =======
    ID HOST PORT
    0* 172.24.1.2 9092
    1 172.24.1.3 9092
    2 172.24.1.4 9092
  2. Create a topic called twitch_chat:

    docker exec -it redpanda-0 rpk topic create twitch_chat
    Example output
    TOPIC       STATUS
    twitch_chat OK
  3. Produce a message to the topic:

    docker exec -it redpanda-0 rpk topic produce twitch_chat
  4. Enter a message, then press Enter:

    Pandas are fabulous!
    Example output
    Produced to partition 0 at offset 0 with timestamp 1663282629789.
  5. Press Ctrl+C to finish producing messages to the topic.

  6. Consume one message from the topic:

    docker exec -it redpanda-0 rpk topic consume twitch_chat --num 1
    Example output

    Your message is displayed along with its metadata,:

    {
    "topic": "twitch_chat",
    "value": "Pandas are fabulous!",
    "timestamp": 1663282629789,
    "partition": 0,
    "offset": 0
    }

Explore your topic in Redpanda Console

Redpanda Console is a developer-friendly web UI for managing and debugging your Redpanda cluster and your applications.

  1. Open Redpanda Console in a web browser.

    All your Redpanda brokers are listed along with their IP addresses and IDs.

  2. Go to Topics > twitch_chat.

    The message that you produced to the topic is displayed along with some other details about the topic.

Connect to the cluster externally

Until now, you've been using rpk inside the containers to communicate with the Redpanda cluster internally inside the Docker network.

The docker-compose.yml file configured the containers to also expose ports to your localhost so that you can communicate with the cluster outside the Docker network.

note

The rpk binary is not supported on Windows.

  1. Install rpk:

    1. Download the rpk archive for Linux:

      curl -LO https://github.com/redpanda-data/redpanda/releases/latest/download/rpk-linux-amd64.zip
    2. Ensure that you have the folder ~/.local/bin:

      mkdir -p ~/.local/bin
    3. Add it to your $PATH:

      export PATH="~/.local/bin:$PATH"
    4. Unzip the rpk files to your ~/.local/bin/ directory:

      unzip rpk-linux-amd64.zip -d ~/.local/bin/
    5. Run rpk version to display the rpk binary version:

      rpk version
      Example output
      v22.3.11 (rev 9eefb907c)
  2. Get information about the cluster to test the connection.

    rpk cluster info --brokers 127.0.0.1:19092
    Example output
    BROKERS
    =======
    ID HOST PORT
    0* 172.24.1.2 9092
    1 172.24.1.3 9092
    2 172.24.1.4 9092

    TOPICS
    ======
    NAME PARTITIONS REPLICAS
    twitch_chat 1 1
    note

    The Redpanda broker returns a list of all broker addresses so that rpk can communicate with all brokers directly. Each broker returns its configured advertise-* address that matches the port to which the initial connection has been made.

Clean up

When you're finished with the cluster, shut down and delete the containers:

docker compose down

To delete the volumes along with all your cluster data, run the following:

docker volume rm redpanda-quickstart_redpanda-0 redpanda-quickstart_redpanda-1 redpanda-quickstart_redpanda-2

Next steps

Suggested reading

Explore the rpk commands that you used in this quickstart:

Docker images

Find the Docker images for Redpanda on Docker Hub.

Find the Docker images for Redpanda Console on Docker Hub.

What do you like about this doc?




Optional: Share your email address if we can contact you about your feedback.

Let us know what we do well: