【发布时间】:2016-11-07 19:47:57
【问题描述】:
我很难弄清楚这一点。
所以我有一个基于 Ubuntu 映像的 dockerfile。在我的 dockerfile 末尾,我有:
CMD django-admin startproject $PROJECTNAME
我在上一篇文章中被告知,基本 Ubuntu 映像有一个 CMD 来运行 /bin/bash,所以我的命令实际上覆盖了它(不确定这是否相关)。
我遇到的问题是如果我运行:
docker run -i -t <containerid>
什么都没有发生.. docker ps 显示没有容器正在运行
但如果我跑:
docker run -i -t <containerid> /bin/bash
容器开始运行,我在shell中,docker ps显示这个容器正在运行。一切都按预期工作,但我的 django 项目不存在,我的理解是运行 /bin/bash 会覆盖 dockerfile 中的 CMD,这意味着 django-admin startproject 永远不会运行。
从容器内部,我可以运行 django-admin startproject $projectname,它会毫无问题地创建项目,这告诉我 django 及其所有依赖项都已安装,并且我的环境变量正在注册。
但是,我仍然怀疑我的 dockerfile 中的 CMD 可能存在问题,我不知道从哪里开始。
使用我提供的 dockerfile,如果我不使用 /bin/bash 运行容器,容器将不会运行。
docker 图像的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> cbec557d6362 About a minute ago 579 MB
<none> <none> 6919c19b159a 16 hours ago
码头运行:
docker run -i -t cbec557d6362
【问题讨论】:
-
两个相关的问题,你是否使用你的Dockerfile构建了一个镜像?你了解image and a container 之间的区别吗?
-
两个问题都是。
-
能否包含
docker images的输出和确切的docker run命令?只是想确认您正在启动正确的图像。 -
好的,我把它包括在内了。
-
你能加入this room吗?那可能比 cmets 更快
标签: django bash docker dockerfile