1.简介
systemd管理的应用可以通过systemctl enable xxx来设置开机启动,那docker的容器在哪里设置开机自启动呢?
docker run 运行容器的时候,常用--restart unless-stopped 参数,这个参数就与开机启动有关,
--restart string Restart policy to apply when a container exits (default "no")
docker有4种重启类型
类型 | 描述 | 场景 |
--restart=unless-stopped | docker守护进程重启后容器也会重启,除非之前是已停的,之前运行的都重启。 | 常用 |
--restart=always | 容器以任何方式的退出,总尝试重启。 | 需要持续运行的服务,以确保服务始终可用。 |
--restart=on-failure[max_try] | 容器运行出错后重启。 | 因错误退出,自动修复后自动恢复的服务。 |
--restart=no | 未指定时默认,只要退出,就不再重启。 | 只需要运行一次,后续不关注。 |
注:docker stop 后失效,例如docker服务还在,手动全部停止了容器docker stop $(docker ps -aq),服务器重启后,容器就不会起来,也符合--restart=unless-stopped。
--restart=always,查看重启次数
docker inspect -f "{{ .RestartCount }}" 容器ID
2.忘记设置--restart=怎么办
使用docker update
docker update --restart=unless-stopped 容器ID
3.docker的容器7种状态
容器状态 | 描述 |
created | 被创建未启动 |
running/Up | 运行中 |
paused | 被暂停 |
removing | 迁移中 |
restarting | 启动中 |
exited | 已退出 |
dead | 无法运行 |
4.docker状态码
#可以看到STATUS列的Exited (x)
docker ps -a
#State部分的ExitCode
docker inspect 容器ID
Exited (0) | 正常退出 |
Exited (非0) | 非正常退出,如Exited (1) 出错退出,Exited (127)命令找不到,Exited (125)一般docker run出错 |