anchor.diff:  
   [source,bash,indent=0]
   ----
  -    $ docker run -it --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.2
  +    $ docker run -it --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.3
   ----
   
   This runs a new container using version {debezium-docker-label} of the `debezium/zookeeper` image, and assigns the name `zookeeper` to this container. The `-it` flag makes the container interactive, meaning it attaches the terminal's standard input and output to the container so that you can see what is going on in the container. The three `-p` options map three of the container's ports (e.g., 2181, 2888, and 3888) to the same ports on the Docker host so that other containers (and software outside the container) can talk with Zookeeper.
  
positive.code: 
  [source,bash,indent=0]
  ----
      $ docker run -it --name kafka -p 9092:9092 -e ADVERTISED_HOST_NAME=$(docker-machine ip) --link zookeeper:zookeeper debezium/kafka:0.2
  ----
  
  [NOTE]
  ====
  On Linux, simply replace the `$(docker-machine ip)` portion of the command with the public IP address of the host machine, and do the same in any other commands in which it appears.
  ====
  
  This runs a new container using version {debezium-docker-label} of the `debezium/kafka` image, and assigns the name `kafka` to this container. The `-it` flag makes the container interactive, meaning it attaches the terminal's standard input and output to the container so that you can see what is going on in the container. The command maps port 9092 in the container to the same port on the Docker host so that software outside of the container can talk with Kafka. The command uses `-e` option to set the `ADVERTISED_HOST_NAME` environment variable in the container to the IP address of the _Docker host_, and the container uses this environment variable when configuring and starting Kafka so that Kafka properly reports to clients the IP address where it can be found. In our case, we use the `docker-machine ip` command to optain the IP address of the Docker host. Finally, the command uses the `--link zookeeper:zookeeper` argument to tell the container that it can find Zookeeper in the container named `zookeeper` running on the same Docker host.
  
  You should see in your terminal the typical output of Kafka, ending with:
  
  [listing,indent=0,options="nowrap"]
  ----
      ...
      2016-06-09 15:30:15,065 - INFO  [main-EventThread:ZkClient@711] - zookeeper state changed (SyncConnected)
      2016-06-09 15:30:15,160 - INFO  [main:Logging$class@68] - Loading logs.
      2016-06-09 15:30:15,169 - INFO  [main:Logging$class@68] - Logs loading complete.
      2016-06-09 15:30:15,400 - INFO  [main:Logging$class@68] - Starting log cleanup with a period of 300000 ms.
      2016-06-09 15:30:15,402 - INFO  [main:Logging$class@68] - Starting log flusher with a default period of 9223372036854775807 ms.
      2016-06-09 15:30:15,404 - WARN  [main:Logging$class@83] - No meta.properties file under dir /kafka/data/1/meta.properties
      2016-06-09 15:30:15,460 - INFO  [main:Logging$class@68] - Awaiting socket connections on 0.0.0.0:9092.
      2016-06-09 15:30:15,464 - INFO  [main:Logging$class@68] - [Socket Server on Broker 1], Started 1 acceptor threads
      2016-06-09 15:30:15,486 - INFO  [ExpirationReaper-1:Logging$class@68] - [ExpirationReaper-1], Starting 
      2016-06-09 15:30:15,488 - INFO  [ExpirationReaper-1:Logging$class@68] - [ExpirationReaper-1], Starting 
      2016-06-09 15:30:15,541 - INFO  [main:Logging$class@68] - Creating /controller (is it secure? false)
      2016-06-09 15:30:15,548 - INFO  [main:Logging$class@68] - Result of znode creation is: OK
      2016-06-09 15:30:15,549 - INFO  [main:Logging$class@68] - 1 successfully elected as leader
      2016-06-09 15:30:15,639 - INFO  [main:Logging$class@68] - [GroupCoordinator 1]: Starting up.
      2016-06-09 15:30:15,645 - INFO  [group-metadata-manager-0:Logging$class@68] - [Group Metadata Manager on Broker 1]: Removed 0 expired offsets in 4 milliseconds.
      2016-06-09 15:30:15,648 - INFO  [ExpirationReaper-1:Logging$class@68] - [ExpirationReaper-1], Starting 
      2016-06-09 15:30:15,648 - INFO  [main:Logging$class@68] - [GroupCoordinator 1]: Startup complete.
      2016-06-09 15:30:15,647 - INFO  [ExpirationReaper-1:Logging$class@68] - [ExpirationReaper-1], Starting 
      2016-06-09 15:30:15,732 - INFO  [ThrottledRequestReaper-Produce:Logging$class@68] - [ThrottledRequestReaper-Produce], Starting 
      2016-06-09 15:30:15,741 - INFO  [ThrottledRequestReaper-Fetch:Logging$class@68] - [ThrottledRequestReaper-Fetch], Starting 
      2016-06-09 15:30:15,763 - INFO  [main:Logging$class@68] - Will not load MX4J, mx4j-tools.jar is not in the classpath
      2016-06-09 15:30:15,787 - INFO  [ZkClient-EventThread-14-172.17.0.3:2181:Logging$class@68] - New leader is 1
      2016-06-09 15:30:15,791 - INFO  [main:Logging$class@68] - Creating /brokers/ids/1 (is it secure? false)
      2016-06-09 15:30:15,801 - INFO  [main:Logging$class@68] - Result of znode creation is: OK
      2016-06-09 15:30:15,803 - INFO  [main:Logging$class@68] - Registered broker 1 at path /brokers/ids/1 with addresses: PLAINTEXT -> EndPoint(192.168.99.100,9092,PLAINTEXT)
      2016-06-09 15:30:15,815 - INFO  [main:AppInfoParser$AppInfo@82] - Kafka version : 0.9.0.1
      2016-06-09 15:30:15,816 - INFO  [main:AppInfoParser$AppInfo@83] - Kafka commitId : 23c69d62a0cabf06
      2016-06-09 15:30:15,818 - INFO  [main:Logging$class@68] - [Kafka Server 1], started
  ----
  
  The last line shown above reports that the Kafka broker has successfully started and is ready for client connections. The terminal will continue to show additional output as Kafka generates it.
  
  [TIP]
  ====
  Debezium uses Kafka Connect, which Kafka introduced in 0.9.0.0. We're using Kafka 0.9.0.1 in this tutorial since at the time of writing it is the latest patch release of 0.9.0.x. Debezium will also work with more recent versions of Kafka.
  ====
  
  [[start-kafka-connect]]
  
negative.code: 
  [source,bash,indent=0]
  ----
      $ docker run -it --name watcher --rm --link zookeeper:zookeeper debezium/kafka:0.3 watch-topic -a -k mysql-server-1.inventory.customers
  ----
  
  Again, we use the `--rm` flag since we want the container to be removed when it stops, and we use the `-a` flag on `watch-topic` to signal that we want to see _all_ events since the beginning of the topic. (If we were to remove the `-a` flag, we'd see only the events that are recorded in the topic _after_ we start watching.) The `-k` flag specifies that the output should include the event's key, which in our case contains the row's primary key. Here's the output:
  