仅Windows 10下的Docker网络问题

时间:2018-07-11 19:24:10

标签: windows docker docker-compose docker-for-windows

我有一个在OSX上开发的Dockerfile和docker-compose.yml。看起来像这样:

cat Dockerfile

FROM alpine:3.7

ADD ./app /home/app/
WORKDIR /home/app/

RUN apk add --no-cache postgresql-dev gcc python3 python3-dev musl-dev && \
    python3 -m ensurepip && \
    rm -r /usr/lib/python*/ensurepip && \
    pip3 install --upgrade pip setuptools && \
    rm -r /root/.cache && \
    pip3 install -r requirements.txt

EXPOSE 5000

ENTRYPOINT ["python3", "app.py"]

cat docker-compose.yml

version: "3"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - ./app/:/home/app/
    depends_on:
      - db
  db:
    image: postgres:10
    environment:
      - POSTGRES_USER=testusr
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=testdb
    expose:
      - 5432

然后我从以下位置开始:docker-compose up --build -d,并在端口5000上打开Web浏览器,它显示一个表单(与预期的一样)。同样,这在OSX上完美运行。

但是,在Windows 10上,它仅显示空白页。 docker port <CONTAINER>显示5000/tcp -> 0.0.0.0:5000,因此我知道它已绑定到正确的端口。

此外,如果我docker logs -f <python container>并没有显示到容器的请求。通常,对于每个烧瓶/ nginx反应,都会打印一行新的行(带有状态代码)。在这种情况下,看起来甚至没有到达python应用程序容器。

那么,您知道为什么在Windows上不行吗?

1 个答案:

答案 0 :(得分:0)

因此,答案是您必须使用docker-machine ip来查看容器绑定到的IP。它不仅像OSX一样绑定到localhost / 127.0.0.1。