Docker 容器拒绝连接

2024-01-27

我已经为此挣扎了相当长一段时间。

我有一个 Django 应用程序,我正在尝试将其打包到容器中。

问题是,当我发布到某个端口(8001)时,主机拒绝我的连接。

$ docker-machine ip default
192.168.99.100

当我尝试通过浏览器 192.168.99.100:8001 进行卷曲或访问时,连接被拒绝。

C:\Users\meow>curl 192.168.99.100:8001
curl: (7) Failed to connect to 192.168.99.100 port 8001: Connection refused

第一点:我正在使用 Docker Toolbox。

让我们从 docker-compose.yml 文件开始。

version: '2'
services:
  db:
    build: ./MongoDocker
    image: ockidocky_mongo
  web:
    build: ./DjangoDocker
    image: ockidocky
    #volumes: .:/srv
    ports: 
    - 8001:8000
    links: 
    - db

第二点:这个文件最初给我从头开始构建权限带来了一些麻烦。为了解决这个问题,我单独构建了图像。

docker build -t ockidocky .
docker build -t ockidocky_mongo .

这是 Mongo 的 dockerfile:

# Based on this tutorial. https://devops.profitbricks.com/tutorials/creating-a-mongodb-docker-container-with-an-attached-storage-volume/
# Removed some sudo here and there because they are useless in Docker for Windows

# Set the base image to use to Ubuntu
FROM ubuntu:latest
# Set the file mantainer
MAINTAINER meow

RUN apt-key adv --keyserver  hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list && \
apt-get update && apt-get install -y mongodb-org


VOLUME ["/data/db"]
WORKDIR /data

EXPOSE 27017
#Edited with --smallfiles (Check this issue https://github.com/dockerfile/mongodb/issues/9)
CMD ["mongod", "--smallfiles"]

Django 的 Dockerfile 基于this http://michal.karzynski.pl/blog/2015/04/19/packaging-django-applications-as-docker-container-images/其他教程。

我不会包含代码,但它可以工作。

重要的是最后一行是:

ENTRYPOINT ["/docker-entrypoint.sh"]

我更改了 docker-entrypoint.sh 以在没有 Gunicorn 的情况下运行。

echo Start Apache server.
python manage.py runserver

在此刻docker ps告诉我一切都准备好了:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ddfdb20c2d7c        ockidocky             "/docker-entrypoint.s"   9 minutes ago       Up 9 minutes        0.0.0.0:8001->8000/tcp   ockidocky_web_1
2e2c2e7a5563        ockidocky_mongo       "mongod --smallfiles"    2 hours ago         Up 9 minutes        27017/tcp                ockidocky_db_1

当我运行 dockerspect ockidocky 和有关端口时,它显示:

"Ports": {
                "8000/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8001"
                    }
                ]
            },

这取决于安装量吗?

这是我真的无法弄清楚的事情之一,并且给我带来了 Docker Toolbox 的很多错误。

据我所知,构建过程中一切正常,据我所知,被拒绝的连接不应该依赖于此。

编辑: 连接到容器并列出进程后ps -aux,这就是我所看到的:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.7  3.0 218232 31340 ?        Ssl  20:15   0:01 python manage.p
root         9 13.1  4.9 360788 50132 ?        Sl   20:15   0:26 /usr/bin/python
root        15  0.0  0.2  18024  2596 ?        Ss   20:15   0:00 /bin/bash
root        20  0.1  0.3  18216  3336 ?        Ss   20:17   0:00 /bin/bash
root        33  0.0  0.2  34424  2884 ?        R+   20:18   0:00 ps -aux

附注请随意建议我如何使这个项目对自己来说更容易。


我解决了这个问题。我不知道为什么我必须在这一行指定门docker-entrypoint.sh:

python manage.py runserver 0.0.0.0:8000

Now docker logs ockidocky_web_1显示通常的 django 输出消息。

如果有人能给出正确的解释,我很乐意编辑并投票。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 容器拒绝连接 的相关文章

随机推荐

  • 通过理解避免将重复项插入到 Python 列表中

    我有一本字典 XY dict 1 12 55 13 55 2 14 55 15 57 3 14 55 15 58 4 14 55 16 55 我想找出哪些键具有唯一的值元组 不存在于任何其他键的值中 从示例字典中 键 1 是唯一的 因为两者
  • 非阻塞套接字上的 select()、recv() 和 EWOULDBLOCK

    我想知道下面的场景是不是真实的 非阻塞 TCP 套接字上的 select RD 表示套接字已准备好 尽管调用了 select 但后面的 recv 仍将返回 EWOULDBLOCK For recv 你会得到EAGAIN而不是EWOULDBL
  • IE11 上的 Flexbox:图像无故拉伸?

    我在 IE11 上遇到了 Flexbox 问题 虽然我知道有很多已知问题 但我一直无法找到解决方案 div class latest posts div
  • 使用 OpenGL,结果取决于安装的硬件或驱动程序吗?

    我按照此处的说明使用 OpenGL 遮挡进行渲染 https developer download nvidia com books HTML gpugems gpugems ch29 html https developer downlo
  • 导航器只能包含“Screen”、“Group”或“React.Fragment”作为其直接子级

  • TPL 数据流与普通信号量

    我需要制定一个可扩展的流程 该进程主要有 I O 操作和一些次要的 CPU 操作 主要是反序列化字符串 该流程在数据库中查询 url 列表 然后从这些 url 中获取数据 将下载的数据反序列化为对象 然后将部分数据保存到 crm 动态以及另
  • 在 FlulClient 中禁用自动重定向

    我在用FlulHttp http tmenier github io Flurl fluent http 我想禁用某些 API 调用的AllowAutoRedirect 我知道如何让 System Net Http HttpClient 不
  • 使用 MySQL WorkBench 导入...错误 ERROR 1046 (3D000)

    场景 本地搭建RoR环境进行开发 生产位于 EngineYard GitHub 上 现在一切正常 除了数据库没有导入 我有一个从我的产品 EY 网站获取的 sql 文件 现在我需要将它导入到本地的 MySQL 中 我正在使用工作台 因为我是
  • 枚举强名称CSP的容器名称

    我正在尝试查找一些有关如何 如果可能的话 枚举强名称 CSP 加密服务提供商 中的所有容器名称的信息 本质上 当你输入sn exe i key snk MyContainerName 公钥和私钥对存储在所谓的 容器 中 稍后 在您的代码中
  • 在谷歌地图或谷歌地球插件中惰性/需求加载KML?

    一旦 Google 地图或 Google 地球插件实例启动 是否可以延迟加载 KML 文件 也许有一个 边界框 事件 我可以用它来排队所需的 KML 文件 编辑 gt 找到答案 发现了这个小花絮 http code google com a
  • SVN更新,未提交更改的本地文件会发生什么?

    假设我正在处理一个本地文件 它是存储库的一部分 本地文件具有本地更改 并且已保存到本地文件但尚未提交 当我去更新整个存储库时会发生什么 SVN 是否会尝试将 HEAD 与本地副本合并 希望没有冲突 或者 SVN 是否会保留本地副本直到稍后提
  • “欺骗” SQL Server 接受来自 R 的文件

    我在 R 的本地环境中有一个文件 大约 1000000 行和 15 列 我正在尝试将此文件上传到 SQL 服务器 library odbc library DBI library RODBC dbWriteTable my connecti
  • 无法在本地主机上测试 facebook like 按钮(与以前不同)

    我开发了一个带有 Facebook 社交插件 点赞 推荐和发送按钮 的小网页 直到大约一个月前 我才能在本地主机上成功测试按钮和单击事件 但突然按钮现在无法在本地主机上工作 仅当我通过 localtunnel 将网页部署在公共 IP 上时
  • 修剪 ggplot2 中的第一个和最后一个标签

    我有一个按天列出两种类型数据的图 我希望只修剪图中的第一个和最后一个标签 这是数据的可重现示例 library dplyr library ggplot2 library scales dates lt paste0 2014 01 1 3
  • 读取 D3 中没有标题行的 csv/tsv

    我有 CSV 数据 看起来像 Data 1 1 10 1 2 50 1 3 5 etc 我正在尝试读入数据 但是 我的初始数据不包含标题行 如上所示 因此它将第一个数据行作为标题 1 1 10 有没有办法解决 我想在读取数据后设置标题名称
  • 如何使用 jQuery 验证插件以编程方式检查表单是否有效

    我有一个带有几个按钮的表单 我正在使用 jQuery 验证插件http jquery bassistance de validate http jquery bassistance de validate 我只是想知道是否有任何方法可以检查
  • 为什么我的侧边栏被推到内容下方?

    我正在尝试使用 HTML 和 CSS 设置模板 但我的侧边栏出现问题 它似乎被推到了我的内容下方 尽管它应该是在左侧 我不明白为什么 有没有人有什么建议 Example http jsfiddle net zDdfn http jsfidd
  • 在 SELECT 语句中使用 UDF

    我制作了一个用于计算营业时间的用户定义函数 这是我的UDF CREATE FUNCTION fn GetBusinessHour date datetime addHours int RETURNS datetime AS BEGIN DE
  • 括号() 和 SQL 查询性能

    在where语句中 是否添加不必要的括号 影响SQL性能 Example SELECT FROM table WHERE name John AND age 30 AND address Some Street AND height 510
  • Docker 容器拒绝连接

    我已经为此挣扎了相当长一段时间 我有一个 Django 应用程序 我正在尝试将其打包到容器中 问题是 当我发布到某个端口 8001 时 主机拒绝我的连接 docker machine ip default 192 168 99 100 当我