1.拉取Flume镜像
2.启动调试
拉取镜像:
从hub.docker.com中拉取anchorfree/flume镜像,docker pull anchorfree/flume:latest
通过docker image ps查看
宿主机创建卷路径:mkdir /data_volume/flume
通过下面命令创建container:
docker run -p 9090:80 --name flume -it --net host -v /data_volume/flume/:/data anchorfree/flume:latest /bin/bash
命令介绍:
-p 宿主机port:对应容器port
--name 设容器名字为flume
-it 设立伪终端,交互模式运行容器
-v 容器的/data_volume/flume/指向容器的/data路径(默认无便创建)
anchorfree/flume:latest镜像
/bin/bash 进入容器终端交互
退出容器终端可以按ctrl+P+Q,挂起容器,但是不会直接停止容器。
重新进入容器可以docker exec -it <container name> /bin/bash进入
其他命令可以参考docker命令
由于该镜像apt-get指定的代理是ubantu的,所以需要修改,不然无法get到东西
查找sources.list,本文件是可以通过修改apt-get源,但是缺乏vim,所以这里我直接通过在/data_volume/flume下创建文件sources.list
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
把以上写入sources.list,然后进入容器flume后,在容器根目录下的/data查看sources.list
并把sources.list 复制到/etc/apt/下,替换原来sources.list
shell输入apt-get update,即可更新apt-get源,可以使用apt-get
启动调试
首先安装telnet,直接apt-get install telnet
把以下写在/data下的example.conf(自己创建文件flume的conf文件)
# example.conf: 一个单节点的 Flume 实例配置 # 配置Agent a1各个组件的名称 a1.sources = r1 #Agent a1 的source有一个,叫做r1 a1.sinks = k1 #Agent a1 的sink也有一个,叫做k1 a1.channels = c1 #Agent a1 的channel有一个,叫做c1 # 配置Agent a1的source r1的属性 a1.sources.r1.type = netcat #使用的是NetCat TCP Source,这个的是别名,Flume内置的一些组件都是有别名的,没有别名填全限定类名 a1.sources.r1.bind = localhost #NetCat TCP Source监听的hostname,这个是本机 a1.sources.r1.port = 44444 #监听的端口 # 配置Agent a1的sink k1的属性 a1.sinks.k1.type = logger # sink使用的是Logger Sink,这个配的也是别名 # 配置Agent a1的channel c1的属性,channel是用来缓冲Event数据的 a1.channels.c1.type = memory #channel的类型是内存channel,顾名思义这个channel是使用内存来缓冲数据 a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 把source和sink绑定到channel上 a1.sources.r1.channels = c1 #与source r1绑定的channel有一个,叫做c1 a1.sinks.k1.channel = c1 #与sink k1绑定的channel有一个,叫做c1
然后通过find / -name <filename>找到flume-ng
通过下面命令来启动flume
/opt/flume/bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
命令解释参考文档https://flume.liyifeng.org/#agent
启动后呈现如此
另开一个宿主机终端,进入flume容器后,telnet localhost 44444,接着输入hello
回到前一个终端便发现,如下
测试结束。