在另一个内部使用docker容器的数据

时间:2017-05-19 13:31:53

标签: python docker containers dockerfile docker-volume

主要任务是执行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容器,以便它可以使用它。

2 个答案:

答案 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"