首页 > 解决方案 > Docker 容器/映像正在运行但没有端口号

问题描述

我正在尝试获取我构建的 django 项目以在 docker 上运行并为我的项目创建一个图像和容器,以便我可以将它推送到我的 dockerhub 配置文件。

现在我已经完成了所有设置,并创建了项目的初始图像。但是,当我运行它时,我没有得到任何附加到容器的端口号。我需要这个来测试容器是否真的在工作。

这是我所拥有的:

Successfully built a047506ef54b
Successfully tagged test_1:latest
(MySplit) omars-mbp:mysplit omarjandali$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
test_1                        latest              a047506ef54b        14 seconds ago      810MB

(MySplit) omars-mbp:mysplit omarjandali$ docker run --name testing_first -d -p 8000:80 test_1
01cc8173abfae1b11fc165be3d900ee0efd380dadd686c6b1cf4ea5363d269fb

(MySplit) omars-mbp:mysplit omarjandali$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
01cc8173abfa        test_1              "python manage.py ru…"   13 seconds ago      Exited (1) 11 seconds ago                       testing_first
(MySplit) omars-mbp:mysplit omarjandali$ Successfully built a047506ef54b

您可以看到没有端口号,所以我不知道如何通过 Web 浏览器上的本地计算机访问容器。

码头文件:

FROM python:3
WORKDIR tab/
COPY requirements.txt ./

RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0"]

标签: pythondockerdockerfile

解决方案


问题中的这一行有助于揭示问题;

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
01cc8173abfa        test_1              "python manage.py ru…"   13 seconds ago      Exited (1) 11 seconds ago                       testing_first

Exited (1)(来自 STATUS 列)意味着主进程已经退出,状态码为 1 - 通常意味着错误。这将释放端口,因为当主进程出于任何原因完成时 docker 容器停止运行。

您需要查看日志以诊断原因。

docker logs 01cc将显示 ID 以 . 开头的 docker 容器的日志01cc。您会发现阅读这些内容会对您有所帮助。了解此命令将极大地帮助您调试 docker 中的异常情况,无论容器是运行还是停止。

另一种“快速”的方法是-d在你的运行命令中删除。这将使您的容器内联运行,而不是作为守护进程运行。


推荐阅读