根据我目前阅读的教程,使用"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 run -t -d <image-name>
or
docker run -i -d <image-name>
or
docker run -it -d <image-name>
其他答案所建议的命令参数(即tail -f /dev/null)是完全可选的,并不是让容器保持在后台运行所必需的。
还要注意Docker文档建议组合-i和-t选项会导致它像shell一样运行。
See:
https://docs.docker.com/engine/reference/run/#foreground
在交互模式下运行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秒