主要任务是执行docker容器和尾部日志文件。 这是在python项目中完成的,其中:
docker exec container_to_analyse tail -f /var/log...xy.log
执行了,并将stdout传递给解析并执行一些指标。
完全正常,直到我尝试将项目设置为docker容器。
现在我无法执行所需的容器,但我找不到访问container_to_analyse数据的方法,并在公制容器中使用它。
Dockerfile:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /metrics_docker
COPY ./* /metrics_docker/
WORKDIR /metrics_docker
RUN pip install -r requirements.txt
CMD ["python" , "./data_pusher.py"]
我的问题是,如何将位于/ var / log ...文件中的container_to_analyse日志暴露给我的metrics容器,以便它可以使用它。
答案 0 :(得分:2)
使用--volumes-from
选项(如--volumes-from container_to_analyse
)并声明/ var / log /无论Dockerfile中的VOLUME如何。然后你可以在metrics_container中访问/ var / log /中的任何内容。
答案 1 :(得分:1)
这是关于共享文件的一种方法的简单示例:
version: "3"
services:
app_writer:
image: ubuntu
command: sh -c "while true; do date | tee -a /var/log/shared/app.log; sleep 1; done"
volumes:
- ./shared/:/var/log/shared/
app_reader:
image: ubuntu
command: sh -c "tail -F /var/log/shared/app.log"
volumes:
- ./shared/:/var/log/shared/
运行docker-compose up
:
app_reader_1 | Thu May 18 21:35:12 UTC 2017
app_writer_1 | Thu May 18 21:35:12 UTC 2017
app_writer_1 | Thu May 18 21:35:13 UTC 2017
app_reader_1 | Thu May 18 21:35:13 UTC 2017
app_writer_1 | Thu May 18 21:35:14 UTC 2017
app_reader_1 | Thu May 18 21:35:14 UTC 2017
app_writer_1 | Thu May 18 21:35:15 UTC 2017
app_reader_1 | Thu May 18 21:35:15 UTC 2017
我更喜欢这种方法而不是Dockerfile VOLUME。
同样但没有docker-compose:
mkdir shared/
docker run -v ${PWD}/shared/:/var/log/shared/ -t -d ubuntu sh -c "while true; do date | tee -a /var/log/shared/app.log; sleep 1; done"
docker run -v ${PWD}/shared/:/var/log/shared/ -t ubuntu sh -c "tail -F /var/log/shared/app.log"