Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在另一个容器中使用docker容器的数据_Python_Docker_Containers_Dockerfile_Docker Volume - Fatal编程技术网

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

Python 在另一个容器中使用docker容器的数据,python,docker,containers,dockerfile,docker-volume,Python,Docker,Containers,Dockerfile,Docker Volume,主要任务是执行docker容器和尾部日志文件。 这是在python项目中完成的,其中: docker exec container_to_analyse tail -f /var/log...xy.log 执行,并将stdout传递给解析和执行一些度量 在我尝试将我的项目设置到docker容器之前,它工作得非常好 现在我无法执行到所需的容器中,而且我还没有找到一种方法来访问容器以分析数据并在度量容器中使用它 Dockerfile: FROM python:2.7 ENV PYTHONUNBUF

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

docker exec container_to_analyse tail -f /var/log...xy.log
执行,并将stdout传递给解析和执行一些度量

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

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

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中的日志。。。使用
--volumes from
选项(如
--volumes from container\u to\u analysis
)并在Dockerfile中声明/var/log/任何卷。然后,您可以访问metrics_容器中的/var/log/任何内容。

使用
--volumes from
选项(如
--volumes from container_to_analysis
)并在Dockerfile中声明/var/log/任何内容。然后您可以访问metrics_容器中的/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
我更喜欢这种方法

相同但没有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"

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

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
我更喜欢这种方法

相同但没有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 run-v my_dir_:/var/log/xy.log…启动它?如何将日志文件从
容器装载到主机上,然后装载到
度量容器中的某个位置?
?能否为这两个容器添加
run
命令?(或编写文件)我将尝试帮助..@user2915097它只会生成无法读取的空目录(无法跟随此类型文件的结尾;放弃此名称)@ItayB container_to_-analysis
docker run--privileged--cap add=MKNOD--cap add SYS_ADMIN--shm size 1GB--device/dev/fuse-d--restart=always-p8081:8081-p11112:11112-p11113:11113--link{postgres container}--vdata name{image}
container\u to\u metrics
docker run rtt\u container
在主机上使用
docker run-v my\u dir\u:/var/log/xy.log…
?如何将日志文件从
container\u装载到主机,并将其装载到
metrics\u container
内的某个位置?能否为两个容器添加
run
命令?(或编写文件)我将尝试帮助..@user2915097它只会生成无法读取的空目录(无法跟随此类型文件的结尾;放弃此名称)@ItayB container_to_-analysis
docker run--privileged--cap add=MKNOD--cap add SYS_ADMIN--shm size 1GB--device/dev/fuse-d--restart=always-p8081:8081-p11112:11112-p11113:11113--link{postgres container}--vdata name{image}
container\u to\u metrics
docker run rtt\u container
这也是我的建议,但是@RicardoBranco给出了一个有趣的解决方案,我以前不知道<代码>--来自
的卷太好了!但是你也可以在DokeCeopy中使用命名卷(甚至<代码> VuluSeMe< < /C> >)。我会在上面的每个服务中添加
container\u name
,以避免使用
\u 1
后缀。更多细节:这也是我的建议,但@RicardoBranco给出了一个有趣的解决方案,我以前不知道<代码>--来自
的卷太好了!但是你也可以在DokeCeopy中使用命名卷(甚至<代码> VuluSeMe< < /C> >)。我会在上面的每个服务中添加
container\u name
,以避免使用
\u 1
后缀。更多细节:这么简单,但我错过了,谢谢!很简单,但我错过了,谢谢!