下图中是docker运行的几种状态,带有颜色的圆形块,是都可以在docker ps
中查看到的状态
容器的创建和运行
-
docker create
创建容器但不会运行(None
—create—created
) -
docker start
启动一个已经创建的容器(created
—start—running
) -
docker run
创建并启动容器(None
—created—start—running
)
容器的运行和停止
-
docker start
启动一个停止中的容器(stopped
—start—running
) -
docker stop
停止一个运行中的容器(running
—die—stop—exited
) -
docker kill
杀死一个运行中的容器(running
—die—kill—exited
)
容器的重启
-
docker restart
重启一个运行中的容器(running
—die—start—running
)
容器的暂停
-
docker pause
暂停一个运行中的容器(running
—pause—paused
) -
docker unpause
解除容器的暂停(paused
—unpause—running
)
容器进程退出或内存溢出
进程退出:Container process exited
内存溢出:killed by out of memory
图中红色方框圈出的这两项,都会经过die然后出现一个restart Policy
,是否重新启动服务的一个策略,它由你在运行容器时,是否指定了--restart
参数,来决定。在之前我们也用到过,如:
docker run -it --name test --restart always centos /bin/bash
–restart
判断是否重启的标准就是硬件原因和内存原因
always:表示不管遇到什么错误都进行重新启动容器
never:不管遇到什么错误都不重启
on-failure:容器状态以非0状态码退出时重新启动容器,on-failure:10,表示重启失败的次数,连续10次还是启动不了就不再重新启动
unless-stopped,无论退出码时什么,始终重新启动容器,不过当daemon启动时,如果容器之前已经为停止状态,不要尝试启动它。
在每次重启容器之前,不断地增加重启延迟[上一次重启的双倍延迟,从100毫秒开始]来防止影响服务器。这意味着daemon将等待100ms,然后200 ms, 400, 800, 1600等等,直到超过on-failure限制,或执行docker stop或docker rm -f。
如果容器重启成功[容器启动后并运行至少10秒],然后delay重置为默认的100ms。
你可以使用on-failure策略指定docker尝试重启容器的最大次数。
- 容器会根据配置决定是否重启:
-
systemctl stop docker
docker主进程退出(running
—Container process exited—die—restart Policy—yes/no—running/exited
) - 内存溢出(
running
—killed by out of memory—OMM—die—restart Policy—yes/no—running/exited
)
容器的删除
-
docker rm
删除一个创建中或停止中的容器(created/stopped
—destroy—deleted
)
-