在另一个容器中使用 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"
主要任务是执行到 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.
这是关于如何共享文件的一种方法的简单示例:
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"