根据我目前阅读的教程,使用"docker run -d"将从image启动一个容器,并且容器将在后台运行。这就是它的样子,我们已经有了container id。

root@docker:/home/root# docker run -d centos
605e3928cdddb844526bab691af51d0c9262e0a1fc3d41de3f59be1a58e1bd1d

但如果我运行“docker ps”,什么都没有返回。

所以我尝试了“docker ps -a”,我可以看到容器已经退出:

root@docker:/home/root# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                         PORTS               NAMES
605e3928cddd        centos:latest         "/bin/bash"         31 minutes ago      Exited (0) 31 minutes ago                          kickass_swartz

我做错什么了吗?如何解决此问题?


当前回答

在交互模式下运行docker可能会解决这个问题。

下面是使用和不使用交互模式运行映像的示例

chaitra@RSK-IND-BLR-L06:~/dockers$ sudo docker运行-d -t -i test_again1.0 b6b9a942a79b1243bada59db19c7999cfff52d0a8744542fa843c95354966a18

chaitra@RSK-IND-BLR-L06:~/dockers$ sudo docker ps

容器id镜像命令创建状态端口名称

chaitra@RSK-IND-BLR-L06:~/dockers$ sudo docker run -d -t -i test_again1.0 bash c3d6a9529fd70c5b2dc2d7e90fe662d19c6dad8549e9c812fb2b7ce2105d7ff5

chaitra@RSK-IND-BLR-L06:~/dockers$ sudo docker ps

容器id镜像命令创建状态端口名称 “bash”2 seconds ago Up 1秒

其他回答

嗨,这个问题是因为如果容器中没有正在运行的应用程序,docker容器就会退出。

-d 

选项是在守护模式下运行容器。

因此,让你的容器持续运行的技巧是在docker中指向一个shell文件,它将保持你的应用程序运行。您可以尝试使用start.sh文件

Eg: docker run -d centos sh /yourlocation/start.sh

这个start.sh应该指向一个永不结束的应用程序。

如果你不想让任何应用程序运行,你可以安装monit来保持docker容器运行。 请让我们知道这两个案例是否对你的集装箱运行有效。

愿一切都好!

执行命令如下:

docker run -t -d <image-name>

如果你想指定端口,那么命令如下:

docker run -t -d -p <port-no> <image-name>

使用以下命令验证正在运行的容器:

docker ps

你可以简单地使用:

docker container run -d -it <container name or id> /bin/bash

我已经在下面的帖子中解释了这个问题。

使用“exit”后如何保留docker alpine容器?

如果要对容器进行操作,则需要在前台运行它以保持它的活动状态。