zoukankan      html  css  js  c++  java
  • docker 构建filebeat镜像

    ===============================================

     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

    从官网(https://www.elastic.co/cn/downloads/beats/filebeat)获取tar.gz包(当前最新为filebeat-7.6.2-linux-x86_64.tar.gz),并将tar.gz包上传到/opt/docker/build/filebeat目录下。

     


    2. 创建dockerfile、docker-entrypoint.sh

     # 编辑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

     

     

     

  • 相关阅读:
    Ubuntu中root用户和user用户的相互切换
    Linux扩展权限
    計蒜客/填志愿(匈牙利算法)
    計蒜課/排澇(Edmond-Karp)
    計蒜客/數正方形(dp)
    51nodcontest#24 A(xjb)
    計蒜客/节食的限制(01背包)
    計蒜客/小教官(xjb)
    atcoder#073D(枚舉)
    Educational Codeforces Round 20 C(math)
  • 原文地址:https://www.cnblogs.com/straycats/p/12610003.html
Copyright © 2011-2022 走看看