1.创建目录
mkdir logstash #主目录
cd logstash
mkdir dockerfile #Dockerfile构建镜像目录
mkdir shell #服务构建启动相关脚本
mkdir volumes #挂载服务配置、日志、数据
2.编写Dockerfile
cd dockerfile
logstash安装比较简单,主要是需要配置一些配置文件;直接基于已有的镜像,Dockerfile基本上没有内容
vim Dockerfile
添加内容
FROM logstash:7.4.2
USER logstash
ENTRYPOINT ["logstash","-f"]
CMD ["/usr/share/logstash/logstash.conf"]
3.编写构建脚本
cd ../shell
vim build
添加内容
#!/bin/bash
DOCKER_PATH=$PWD/../
sudo docker build -f $DOCKER_PATH/dockerfile/Dockerfile -t logstash:7.4.2 $DOCKER_PATH/dockerfile/
赋予执行权限
chmod 755 build
构建镜像
./build
查看镜像
docker images
3.配置文件修改
进入volumes目录
创建config目录挂载配置文件
mkdir config
编写配置文件logstash.conf
cd config
vim logstash.conf
内容如下
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
# beats {
# port => 5044
# }
tcp {
# elastcisearch 服务所在 ip 地址(docker内注释这行)
host => "127.0.0.1"
# logstash的端口,默认为 5044。
port => 5044
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "logstash-console-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
编写配置文件logstash.yml
vim logstash.yml
修改内容
# 127.0.0.1 为 logstash 服务所在 ip
http.host: "127.0.0.1"(docker需要填0.0.0.0否则外部无法访问)
http.port: 9600
4.编写创建容器脚本
vim run
内容为
#!/bin/bash
DOCKER_PATH=$PWD/../
port=9600
imageName=logstash
version=7.4.2
sudo docker run -itd -p ${port}:9600 -p 5044:5044 --name logstash -v /etc/localtime:/etc/localtime -v $DOCKER_PATH/volumes/config/jvm.options:/usr/share/logstash/config/jvm.options -v $DOCKER_PATH/volumes/config/logstash.conf:/usr/share/logstash/config/logstash.conf -v $DOCKER_PATH/volumes/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v $DOCKER_PATH/volumes/data/:/usr/share/logstash/data/ --restart=always ${imageName}:${version}
赋予执行权限
chmod 755 run
创建容器并启动
./run
查看容器
docker ps
5.验证是否成功
浏览器输入宿主机ip:9600