使用docker 運行filebeat 出現的問題。
這個是因爲你宿主機的目錄權限與容器內部的filebeat文件權限不一致導致的。
docker logs filebeat 看一下 就是標題的錯誤。
不防先進去容器看一下(不映射,先跑起來)
docker run --name filebeat --rm -d elastic/filebeat:7.5.1
docker exec -it filebeat bash
可以看到filebeat.yml的權限是 user:root group:filebeat
然後查一下容器裏面的 /etc/passwd 看一下對應的UID是多少。 root 是 0 filebeat 是 1000
所以你映射目錄的時候,宿主機的filebeat.yml也要是 0:1000
退出容器,在宿主機執行 cat /etc/passwd 看一下 1000是誰 沒有就創建一個、 在我的機器上是postgres
所以只要filebeat.yml 是 0:1000 的UID 就行了。(因爲docker 映射會按照UID來給權限)
chown root:postgres filebeat.yml
docker run --name filebeat -d -v /home/zy/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml elastic/filebeat:7.5.1
OK(除了這個filebeat.yml 其他文件我沒有映射。)
非docker
將這個參數設置成false就可以了
filebeat –e –strict.perms=false
以上:解法可能有點醜,但是是一種思路。得分的思路。