天天看点

在Docker上运行Apache Kafka

本文讲的是<b>在Docker上运行Apache Kafka,</b>【编者的话】在研究Apache Kafka和Docker时,作者发现Docker是一个非常神奇的技术,它将开发过程简化的如此完美。又因为有wurstmeister/kafka和wurstmeister/zookeeper这两个镜像,运行Apache Kafka和使用Docker是那样的轻松,还有比这更让人觉得兴奋的事情么!让我们完全从安装、维护机器和软件中解脱出来。

然后我就想我应该分享这份热爱,不仅我,所有人都可以从中受益。

你可以在后台或前台独立于镜像运行容器。视你的Unix技术而言,也就是一两个终端的事。这里就对Apache Kafka和Apache Zookeeper各使用一个终端。我会在另一篇博客中解释Apache Zookeeper的作用。

下面是用Docker运行Apache Kafka的步骤,假设你已经装好了<code>boot2docker</code>和<code>docker</code>。

1,(仅适用Mac OS X和Windows用户)执行<code>boot2docker up</code>在Mac OS上启动微型Linux内核。

2,(仅适用Mac OS X和Windows用户)执行<code>$(boot2docker shellinit)</code>设置好终端,让<code>docker</code>知道微型Linux内核运行在哪儿(通过<code>boot2docker</code>)。为了设置上面的<code>export</code>,你必须在所有打开的运行Docker终端中重复这一步骤。如果你遇到<code>docker</code>命令的通信问题,记着这一步。

3,执行<code>docker ps</code>确保为Docker配置好了终端。

这时还没有容器运行。一旦首先启动Zookeeper的容器就会有变化,接着是Kafka。

5,执行<code>docker pull wurstmeister/kafka</code>从Docker Hub下载Zookeeper镜像(可能需要几分钟)

你会看到各层的哈希打印在控制台里,符合预期。

6,执行<code>docker pull wurstmeister/kafka</code>从Docker Hub下载Kafka镜像(可能需要几分钟)

7,在命令行中执行<code>docker images</code>验证<code>wurstmeister/kafka</code>和<code>wurstmeister/zookeeper</code>两个镜像已下载。

8,现在可以在一个终端里运行<code>docker run --name zookeeper -p 2181 -t wurstmeister/zookeeper</code>引导启动Zookeeper。如果你在Mac OS X或Windows上,记得<code>$(boot2docker shellinit)</code>。

现在ZooKeeper在监听2181端口。用Docker(或者Mac OS上的Boot2Docker)的IP地址远程连接确认下。

9,在另一个终端里执行

记得<code>$(boot2docker shellinit)</code>,如果你在Mac OS X或Windows上。

现在你的电脑上运行着依托Docker的Apache Kafka,你是它的的开心用户。用<code>docker ps</code>查看容器状态。

10,要结束你的Apache Kafka旅程时,用<code>docker stop kafka zookeeper</code>(或<code>docker stop $(docker ps -aq)</code>,如果运行的容器只有<code>kafka</code>和<code>zookeeper</code>)<code>docker stop</code>容器。

之后运行<code>docker ps</code>会显示没有正在运行的容器:

现在没有正在运行的容器是因为他们被关闭了,这些容器依然可以被再次启动----使用<code>docker ps -a</code>查看可以使用的容器。

11,最后,用<code>boot2docker down</code>停止<code>boot2docker</code>守护进程(仅对于Mac OS X和Windows用户)。

原文发布时间为:2015-08-05 

本文作者:Azriel

本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:在Docker上运行Apache Kafka