Docker容器/映像正在运行,但没有端口号

2024-10-01 17:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个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

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

dockerfile文件:

^{pr2}$

Tags: 项目dockertest图像ago容器secondssuccessfully
3条回答

这句话有助于揭示问题

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中的奇怪之处,不管容器是在运行还是停止。在

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

创建Dockrise django seed项目

django-admin.py startproject djangoapp

需要一个要求.txt概述Python依赖关系的文件

^{pr2}$

运行以下命令创建dockerization所需的文件

cat <<EOF > requirements.txt
Django
psycopg2
EOF

Dockerfile文件

cat <<EOF > Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
EOF

码头工人-合成.yml在

cat <<EOF > docker-compose.yml

version: "3.2"    
services:
  web:
    image: djangoapp
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
EOF

使用运行应用程序

docker-compose up -d

创建容器时,您发布了端口。如果你的集装箱成功建造,就可以通过8000端口进入。但是,正如Shadow所指出的,您的容器因错误退出。这就是为什么必须将-a标志添加到docker container ls命令中。docker container ls只显示没有-a标志的正在运行的容器。在

我建议不要使用分离标志-d,看看是什么导致了这个错误。然后在成功启动正在处理的容器后创建一个新容器。或者在修复问题后运行以下命令。docker stop testing_first然后docker container rm testing_first最后运行之前运行的相同命令。docker run name testing_first -d -p 8000:80 test_1

我在尝试运行的第一个docker实例中也遇到了类似的问题。在

相关问题 更多 >

    热门问题