我正在尝试设置一个可用作对等采样服务的应用。每个对等体都运行在一个单独的容器上,为了便于使用,我有一个跟踪器可以为每个对等体提供初始视图。
对于跟踪器,我将其作为具有简单REST API的Python 3.5 Web服务器运行。联系时,它会调用docker-compose -H tcp://hostip:2375 ps
来获取容器及其主机名列表。
奇怪的是,当这个容器执行这个命令时,docker守护进程会回答一个空列表,而如果我要求这个守护进程不是来自容器,而是来自我的计算机,甚至来自同一本地网络上的其他计算机,它可以正常工作。
我不知道守护进程为什么会发送两个不同的结果。
这是我的Dockerfile
FROM python:3.5.1
# RUN pip install pydevd
ADD . /code
WORKDIR /code
EXPOSE 4321
RUN echo 'starting Tracker'
CMD [ "python", "./scripts/tracker.py" ]
我的docker-compose.yml
version: '2'
services:
pss:
build: .
tracker:
expose:
- "4321"
build:
context: .
dockerfile: Dockerfile-tracker
和python文件中的行:
ps_output = subprocess.check_output('docker-compose -H tcp://<daemon_host_ip>:2375 ps', shell=True).decode().splitlines()