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

Use data of docker container inside another

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

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

被执行,标准输出被传递到解析和做一些指标。

在我尝试将我的项目设置到 docker 容器之前,它工作得很好。

现在我无法执行到所需的容器中,而且我还没有找到访问 container_to_analyse 数据并在度量容器中使用它的方法。

Docker 文件:

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)并在 Dockerfile 中声明 /var/log/whatever VOLUME。然后就可以在metrics_container.

中访问/var/log/whatever

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

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"