启动容器的方式:交互式和非交互式/守护式
-
启动交互式容器
-
启动守护式容器:不需要交互,只要跑着执行就行了
启动交互式容器
docker run -it --name=interactive centos
启动守护式容器
docker run -d
-d: 以后台运行的方式运行容器,返回容器id,也就是启动守护式容器
可以看出并没有进入交互式。若是进入交互式,用户变成root。
一般情况下,进程进入后台,前面看不到,但能够查到进程在运行中。
我运行了docker ps 查看当前正在运行的容器,却没有看到刚才启动的守护式容器,这就比较诡异了???
查看全部的进程,发现守护式容器已经退出了。
原因:
这是docker的机制,Docker容器后台运行,就必须有一个前台进程,也就是说刚才的守护容器自动退出了。
个人理解:前台要有一个交互,不然就会认为这个容器没啥事可做,就给关了
也有一些命令不会自动退出,像top, tail等
要想容器一直运行,最好将运行的容器以前台的形式运行。
看这种守护式容器
docker run -d --name=si_xun_huan centos /bin/sh -c "while true; do echo hello world; sleep 1;done"
后台运行一个死循环,且和前台有交互,因为不停的打印hello world,这种情况下,该容器就会一直运行。
从运行9s到44秒都没死