使用docker集装箱内的数据

一个主要任务是执行到一个docker容器和尾部日志文件。 这是在python项目里面完成的:

docker exec container_to_analyse tail -f /var/log...xy.log 

被执行并且stdout被传递到parsing并且做一些指标。

工作完全正常,直到我尝试将我的项目设置到docker集装箱。

现在我不能执行到所需的容器,我还没有find一种方法来访问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日志公开到我的度量容器中,以便它可以使用它。

使用--volumes-from选项(如--volumes-from container_to_analyse ),并声明/ var / log /不pipeVOLUME在Dockerfile中。 然后,您可以访问metrics_container中的/ var / log /。

这是共享文件的一种方法的简单示例:

 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组成:

 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"