python - 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"]
解决方案
问题中的这一行有助于揭示问题;
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
在你的运行命令中删除。这将使您的容器内联运行,而不是作为守护进程运行。
推荐阅读
- c# - 使用参数调用静态方法的操作,而不在 C# 中捕获它
- python - python列表的单独元素可以同时被单独的子进程访问吗?
- php - 更新新图像仍然显示旧图像
- typescript - NestJS,在生产中放置控制器或路由
- python - 金字塔中外部服务(redis)的连接池
- c# - 使用英文和希腊字符重命名 SQL 表会产生错误(未知字符)
- ms-word - 当包含导出到 word 的表格数据的报告所有表格边框/线条消失时,在访问中
- java - 使用 Mockito,但正在调用真正的方法
- python - Pandas:合并数据框而不在 for 操作中创建新列
- dpdk - 在编译 DPDK hello world 时需要帮助