我可以从图像中运行两次容器吗?

时间:2018-01-07 00:54:25

标签: docker docker-container docker-image

我在交互模式下使用docker run命令下载了busybox的docker镜像并为其创建了一个容器。

退出容器后,我再次尝试run命令,没有交互模式,从本地仓库中已存在的图像创建另一个busybox容器。通过ps检查活动容器列表时,我看不到任何新容器正在运行,但在所有容器ps -a的列表中,我看到新容器已创建并已退出(0)。

虽然我可以通过其start非活动容器,但我想知道为什么run命令在创建后退出容器。

docker cli

1 个答案:

答案 0 :(得分:2)

这是非交互式使用busybox的预期行为。这是因为busybox图片只运行sh

要看到这一点,请查看Dockerfile

FROM scratch
ADD busybox.tar.xz /
CMD ["sh"]

只要容器中运行的进程终止,Docker容器就会停止。因此,当您以非交互方式启动busybox时,shell将退出,因此容器将终止。

如果您的Docker镜像的进程能够以非交互方式运行,则可以使用-d使容器在非交互模式下保持活动状态。 (如果失败了,我建议您查看docker logs [containername],看看幕后发生了什么。)

例如,这将无限期地以非交互方式运行:docker run -d --rm busybox sh -c "while :; do sleep 500; done"