【问题标题】:Docker connection refused hanging DjangoDocker 连接拒绝挂起 Django
【发布时间】:2017-10-25 02:40:17
【问题描述】:

当我运行我的容器时,它只是挂在下一行,如果我写了

卷曲http://0.0.0.0:8000/

我明白了

无法连接到 0.0.0.0 端口 8000:连接拒绝

这是我的 dockerfile

FROM python:3.6.1

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

RUN pip3 install -r requirements.txt

CMD ["python3", "dockerizing/manage.py", "runserver", "0.0.0.0:8000"]

我也尝试通过 docker-compose.yml 文件进行操作,但没有任何反应,我搜索了很多,但没有找到解决方案,这就是 docker-compose.yml

version: "3"
services:
  web:
    image: app1
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "8000:8000"
    networks:
      - webnet
networks:
  webnet:

顺便说一句,如果我使用 myapp 映像运行 docker ps,我会得到:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
e9633657f060        app1                "python3 dockerizi..."   5 seconds ago       Up 5 seconds                            friendly_dijkstra

当我使用 django-compose.yml 和 docker ps 部署服务时,我得到了这个:

`MacBook-Pro-de-Jesus:docker-django Almaral$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
13677a71d9d5        app1:latest        "python3 dockerizin..."   15 seconds ago      Up 11 seconds                           getstartedlab_web.1.cq3zqmpfsii5g6m5r9qsnmtb1
c6693118ef70        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.4.r472oh80s4zd1yymj447f1df6
f3822e47970b        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.2.lkp43v9h30esjohcnf3pe31hi
f66a4038ebdf        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.5.xxu01ruebd84tnlxmoymsu0vo
e3d31c419c11        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 13 seconds                           getstartedlab_web.3.uqswgirmg22sjnekzmf5b4xo7`

【问题讨论】:

  • 你在什么操作系统上运行 docker?
  • 试试curl http://localhost:8000 并告诉我们结果
  • 这是 macOS Sierra 10.12.4
  • 这是curl http://localhost:8000 curl 的结果: (7) 无法连接到本地主机端口 8000:连接被拒绝
  • 您的docker ps 的输出中应该有0.0.0.0:8000->8000/tcp。但是,您的配置似乎还可以。尝试删除服务,然后从头开始。 (尝试docker-compose down 删除容器,docker service ls

标签: django docker docker-compose dockerfile docker-container


【解决方案1】:

您的 docker ps 输出在 PORTS 列中不显示任何内容。这意味着没有从主机到容器的端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds                              friendly_dijkstra

如果您使用命令docker run 运行容器,则应使用命令选项-p hostPort:containerPort 明确指定主机和容器上的端口号

docker run -p 8000:8000 app1

现在,运行 docker ps 应该会显示端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds    0.0.0.0:8000->8000/tcp    friendly_dijkstra

如果您使用docker-compose 启动容器,则主机和容器端口已在您的 docker-compose.yml 文件中配置,因此您不需要命令行选项。

docker-compose up web

要使用 docker compose,您必须在主机上安装它。 这是一个python模块,所以你可以用pip pip install docker-compose安装它

【讨论】:

  • 感谢它现在可以工作了!!,但它只适用于容器本身,它不能通过 docker-compose.yml 使用服务
  • 对于那些有同样问题的人,我不得不重新启动mac并且docker compose正常工作,我认为这是一个docker bug
【解决方案2】:

在您的 docker-compose 配置文件中,将您的端口重定向从:8000:8000 修改为 127.0.0.1:8000:8000

【讨论】:

  • 做到了,没有任何改变:(
  • 好的!尝试将您的网络设置删除到您的 docker-compose 配置文件(networks: webnet 等)然后添加端口重定向修改。重启你的服务:docker-compose stop && docker-compose rm -f && docker-compose up -d 然后发布你的docker ps 结果。
  • 我用运行docker ps时得到的内容更新了问题
猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 2019-05-05
  • 2020-01-19
  • 2017-11-14
  • 2021-08-30
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多