===============================================
2020/4/1_第1次修改 ccb_warlock
===============================================
距離上次寫filebeat的鏡像構建已經是2年前了,最近在做框架的攔截器層面寫日志到ES中,於是在試驗ELK的docker部署的同時,我順便重新構建當前最新(7.6.2)的filebeat。
當然我拉取了官方鏡像看了下,鏡像還是這么大,所以我還是在之前的構建內容的基礎上改進了文件目錄,使其與elk容器的目錄更接近。
官方目前也提供了鏡像庫(https://www.docker.elastic.co/),雖然官方說明底層鏡像是用centos,但是打包出來的鏡像不僅容量大,而且目錄的靈活性沒有自己構建要強,故我還是建議自己來構建鏡像。
至於單獨整理這個構建方法是我覺得鏡像的構建和容器的部署本來就是兩碼事,之前圖方便記錄在了一起,反而顯得啰嗦(畢竟有的人只想直接用官方鏡像部署就好了,根本不想了解鏡像是怎么構建的)。
為了方便描述,我還是以centos7的環境下來描述構建過程。如果你只想了解怎么部署filebeat容器,可以直接看部署記錄(https://www.cnblogs.com/straycats/p/9153495.html)。
1. 獲取filebeat包
# 創建構建用的目錄
mkdir -p /opt/docker/build/filebeat

2. 創建dockerfile、
cd /opt/docker/build/filebeat
vi dockerfile
# 將下面的內容添加到dockerfile文件內並保存。
FROM ubuntu:18.04 WORKDIR /usr/share/filebeat COPY filebeat-7.6.1-linux-x86_64.tar.gz /usr/share RUN cd /usr/share && \ tar -xzf filebeat-7.6.1-linux-x86_64.tar.gz -C /usr/share/filebeat --strip-components=1 && \ rm -f filebeat-7.6.1-linux-x86_64.tar.gz && \ chmod +x /usr/share/filebeat ADD ./docker-entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] CMD ["/usr/share/filebeat/filebeat","-e","-c","/usr/share/filebeat/filebeat.yml"]
PS.
1.設置的工作目錄和之前的不太一樣,是因為最近搭建elk時根據官方給的elk鏡像目錄進行的調整。
2.這里選擇ubuntu的原因是其作為底層打包出來的鏡像比centos要小很多。我曾經嘗試使用alpine:3.7作為底層,但是構建后的鏡像運行時報“standard_init_linux.go:190: exec user process caused "no such file or directory"”,故最后還是選擇ubuntu。
# 編輯docker-entrypoint.sh
vi docker-entrypoint.sh
# 將下面的內容添加到docker-entrypoint.sh文件內並保存。
#!/bin/bash set -e TMP=${PATHS} config=/usr/share/filebeat/filebeat.yml if [ ${TMP:0:1} = '/' ] ;then tmp='"'${PATHS}'"' fi env echo 'Filebeat init process done. Ready for start up.' echo "Using the following configuration:" cat /usr/share/filebeat/filebeat.yml exec "$@"
3. 構建鏡像
# 構建
cd /opt/docker/build/filebeat
docker build --rm -t filebeat:7.6.2 .
構建完成后,通過docker images可以看到多了一個filebeat:7.6.2的鏡像。
接着就可以用它創建容器了。(https://www.cnblogs.com/straycats/p/9153495.html)
