当前位置: 首页 > 知识库问答 >
问题:

运行docker容器时如何运行CMD和打开Bash?

公冶谦
2023-03-14

我很难弄明白这一点。

所以我有一个基于Ubuntu映像的dockerfile。在我的dockerfile的末尾,我有:

CMD django-admin startproject $PROJECTNAME
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永远不会运行。

然而,我仍然怀疑我的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

共有1个答案

唐阳飇
2023-03-14

我对原来的问题作了评论,但不管出于什么原因,现在有了一个新的问题。当您运行/bin/bash时,它将成为在该容器中运行的命令,即bash shell。您可以在容器中做任何您想做的事情(比如创建一个Django项目),但是当您退出该shell时,容器仍然停止(就像PID 1进程退出时容器停止一样,在本例中,/bin/bash)。

我怀疑(我对Django不是特别了解)命令django-admin startproject$projectname正在运行,并成功完成,然后退出。它是PID1,所以容器停止。这就是为什么Docker PS什么都不显示的原因。

我的建议是在Dockerfile中使用运行django-admin startproject$projectname,然后使用cmd/bin/bash

构建容器,然后运行它,您应该在一个bash shell中,检查您的项目是否已创建。

 类似资料:
  • 只有当docker容器尚未运行时,我才需要运行它。给了这个命令。如果它不存在,我将如何运行它。 我对任何脚本或语言都持开放态度。

  • 问题内容: 我仅在尚未运行的情况下才需要运行docker容器。给定此命令。如果它不存在,我将如何运行它。 我可以使用任何脚本或语言。 问题答案: 使用过滤器检查是否存在特定名称的容器:( 请参阅docker ps Filterring ) 该如果第一部分是假的,才执行。 为了安全起见(可能会返回多个名称),您也可以选择这样做(如果您认为“ nginx”一词不能作为任何容器名称的一部分): 要么:

  • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

  • 我有以下docker文件,它运行: 问题是,目前我必须首先在主机上运行 ,以便在路径的本地计算机上创建 jar 文件: 我如何将这个< code>gradle clean build放入我的docker文件中,以便构建步骤在容器内部完成? 编辑: 我希望用户的步骤是: < li >从< code>github克隆我的项目 < li >运行< code>docker build -t pokerst

  • 问题内容: 在旧版Docker for Windows中,我记得它明确表示它使用Linux VM作为内核。 但自从新的稳定版本(我认为是2016年7月发布)以来,它说 如果我理解正确,则指定的基本映像用于用户空间,并且使用主机的内核。因此,如果指定使用ubuntu基本映像运行echo命令,则Windows内核如何发挥作用? 还是我完全误会了什么? 问题答案: 适用于Windows的Docker仍使

  • 我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误: