Python 从容器访问Docker compose容器主机名
我正在尝试设置一个应用程序,作为对等采样服务。每个节点将在一个单独的容器上运行,为了便于使用,我会有一个跟踪器,它将为每个节点提供其初始视图 对于跟踪器,我将它作为一个具有简单RESTAPI的Python3.5Web服务器运行。联系时,它调用Python 从容器访问Docker compose容器主机名,python,docker,containers,docker-compose,hostname,Python,Docker,Containers,Docker Compose,Hostname,我正在尝试设置一个应用程序,作为对等采样服务。每个节点将在一个单独的容器上运行,为了便于使用,我会有一个跟踪器,它将为每个节点提供其初始视图 对于跟踪器,我将它作为一个具有简单RESTAPI的Python3.5Web服务器运行。联系时,它调用docker compose-Htcp://hostip:2375 ps获取容器及其主机名的列表 奇怪的是,当这个容器执行这个命令时,docker守护进程会给出一个空列表,而如果我不是从容器而是从我的计算机,甚至是从同一个本地网络上的另一台计算机询问这个守护
docker compose-Htcp://hostip:2375 ps
获取容器及其主机名的列表
奇怪的是,当这个容器执行这个命令时,docker守护进程会给出一个空列表,而如果我不是从容器而是从我的计算机,甚至是从同一个本地网络上的另一台计算机询问这个守护进程,它就可以正常工作
我不知道为什么守护进程会发送两个不同的结果
这是我的文件
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\u output=subprocess。检查\u output('docker-compose-H tcp://:2375 ps',shell=True)。decode().splitlines()
如果在python之外的容器中运行命令本身,输出是什么。任何错误输出?是的,没有错误输出。容器内外的docker-H tcp://:2375 info
输出是否相同(使用主机ip)?它们是相同的。我试着把docker.sock放在容器里,而不是放在容器里tcp://... 如果您在python之外的容器中运行命令本身,那么输出是什么呢。任何错误输出?是的,没有错误输出。容器内外的docker-H tcp://:2375 info
输出是否相同(使用主机ip)?它们是相同的。我试着把docker.sock放在容器里,而不是放在容器里tcp://... 这也没用。