首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一些Docker容器在从命令行创建时不运行,而在从桌面应用程序创建时运行

一些Docker容器在从命令行创建时不运行,而在从桌面应用程序创建时运行
EN

Stack Overflow用户
提问于 2021-11-20 08:54:35
回答 1查看 290关注 0票数 0

当我从命令行运行docker run <image>时,会创建一个容器(如docker ps -a中所示),但它不会运行(如docker ps中所示)。docker start <container>没有解决这个问题:容器只是不想运行。

然而,当我在Mac (蒙特利)上从桌面应用程序初始化一个容器时,这个容器在桌面应用程序和终端上都运行得很好。容器出现在docker ps中,我可以停止它(docker stop),然后重新启动它(docker start)。没问题。

因此,这是关于如何从图像( docker run命令)初始化容器的。怎么回事?也许,在终端中运行命令时,我没有指定一些必需的args吗?

下面是我发现的有这样一个问题的图片:

  • ubuntu:latest
  • ubuntu:18.04
  • Python:3.7
  • Python:3.9
  • Python:3.9.9-bullseye

虽然这些映像运行良好(例如,我可以使用终端中的简单docker run从它们中旋转容器):

  • nextcloud:latest
  • mongo:latest
EN

回答 1

Stack Overflow用户

发布于 2021-11-20 11:50:42

Docker容器是单个进程的包装器。Docker运行进程,当它运行进程时,容器退出。您通常不会“登录到容器”,“保持容器运行”通常也不重要。

如果您查看您的容器列表,第二个组实际上正在运行某个服务器,因此

代码语言:javascript
复制
docker run -d -p 27017:27017 mongo:latest

以启动MongoDB实例。但是,第一组容器只是其他事情的基础;如果您有一个未经修改的ubuntu容器,那么您期望它的主要进程是什么?在它的Dockerfile中,它恰好是一个交互式的shell,但这意味着如果您运行

代码语言:javascript
复制
docker run -d ubuntu:latest

shell确定它没有任何输入和出口,并带走容器。

您通常不会有机会直接运行未经修改的基本映像,如ubuntupython。在您的FROM行中使用这些Dockerfile

你通常不需要docker start。如果容器停止,通常应该由docker rm (现有容器)从一个干净的已知状态获得一个新容器,并将一个新容器( docker run )作为新容器。删除和重新创建这样的容器是非常例行的(您需要这样做,以更改核心Docker选项或任何时候的应用程序代码更改),您可能需要做一些计划围绕它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70044519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档