Skip to main content
 首页 » 编程设计

python之Docker 容器/图像正在运行但没有端口号

2024年12月31日31bjzhanghao

我正在尝试获取我构建的在 docker 上运行的 django 项目,并为我的项目创建一个图像和容器,以便我可以将它推送到我的 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 

你可以看到没有端口号,所以我不知道如何在我的网络浏览器上通过我的本地机器访问容器。

docker 文件:

FROM python:3 
WORKDIR tab/ 
COPY requirements.txt ./ 
 
RUN pip install -r requirements.txt 
COPY . . 
CMD ["python", "manage.py", "runserver", "0.0.0.0"] 

请您参考如下方法:

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

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 容器停止运行。

You need to view the logs in order to diagnose why.

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

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