当我从命令行运行docker run <image>时,会创建一个容器(如docker ps -a中所示),但它不会运行(如docker ps中所示)。docker start <container>没有解决这个问题:容器只是不想运行。
然而,当我在Mac (蒙特利)上从桌面应用程序初始化一个容器时,这个容器在桌面应用程序和终端上都运行得很好。容器出现在docker ps中,我可以停止它(docker stop),然后重新启动它(docker start)。没问题。
因此,这是关于如何从图像( docker run命令)初始化容器的。怎么回事?也许,在终端中运行命令时,我没有指定一些必需的args吗?
下面是我发现的有这样一个问题的图片:
ubuntu:latestubuntu:18.04Python:3.7Python:3.9Python:3.9.9-bullseye虽然这些映像运行良好(例如,我可以使用终端中的简单docker run从它们中旋转容器):
nextcloud:latestmongo:latest发布于 2021-11-20 11:50:42
Docker容器是单个进程的包装器。Docker运行进程,当它运行进程时,容器退出。您通常不会“登录到容器”,“保持容器运行”通常也不重要。
如果您查看您的容器列表,第二个组实际上正在运行某个服务器,因此
docker run -d -p 27017:27017 mongo:latest以启动MongoDB实例。但是,第一组容器只是其他事情的基础;如果您有一个未经修改的ubuntu容器,那么您期望它的主要进程是什么?在它的Dockerfile中,它恰好是一个交互式的shell,但这意味着如果您运行
docker run -d ubuntu:latestshell确定它没有任何输入和出口,并带走容器。
您通常不会有机会直接运行未经修改的基本映像,如ubuntu或python。在您的FROM行中使用这些Dockerfile。
你通常不需要docker start。如果容器停止,通常应该由docker rm (现有容器)从一个干净的已知状态获得一个新容器,并将一个新容器( docker run )作为新容器。删除和重新创建这样的容器是非常例行的(您需要这样做,以更改核心Docker选项或任何时候的应用程序代码更改),您可能需要做一些计划围绕它。
https://stackoverflow.com/questions/70044519
复制相似问题