配置容器的自动重启策略
·
1.了解 --restart 选项的可用值
各值核心区别对比
| 重启策略值 | 失败退出(非 0 码) | 成功退出(0 码) | Docker 守护进程重启后 | 手动 stop 后是否重启 |
|---|---|---|---|---|
no(默认) | 不重启 | 不重启 | 不重启 | 不重启 |
on-failure[:n] | 重启(最多 n 次) | 不重启 | 若未达次数则重启 | 不重启 |
always | 重启 | 重启 | 重启(除非已删除) | 不重启(daemon 重启后恢复) |
unless-stopped | 重启 | 重启 | 未手动 stop 则重启 | 不重启(daemon 重启也不恢复) |
2.测试容器自动重启策略
1.运行一个始终重启的 Redis 容器
[root@host1 ~]# docker run -d --name testredis --restart=always redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
d107e437f729: Already exists
a3f725691cac: Pull complete
bd022da7d981: Pull complete
349073970fc7: Pull complete
cf596724f63e: Pull complete
4f4fb700ef54: Pull complete
d7e6e9e45ecf: Pull complete
Digest: sha256:acb90ced0bd769b7c04cb4c32c4494ba7b3e0ee068bdbfff0eeb0d31c2a21078
Status: Downloaded newer image for redis:latest
4793ed14dab78f0b3dfd543407a865f9d6992b0ea4e61658ddcc8fa57a0c0c48
2.查看当前运行的容器列表
[root@host1 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4793ed14dab7 redis "docker-entrypoint.s…" 41 seconds ago Up 40 seconds 6379/tcp testredis
0dbf7ea2178e registry "/entrypoint.sh /etc…" 4 days ago Up 42 minutes 0.0.0.0:5000->5000/tcp, [::]:5000->5000/tcp myregistry
3.测试该容器是否自动启动
停止 Docker
[root@host1 ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
停止 docker.socket 以停用 Docker 自动唤醒机制
[root@host1 ~]# systemctl stop docker.socket
查看当前是否有容器正在运行
[root@host1 ~]# docker container ls
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
4.启用 Docker 并查看当前是否有容器正在运行
root@host1 ~]# systemctl start docker
[root@host1 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4793ed14dab7 redis "docker-entrypoint.s…" 2 minutes ago Up 4 seconds 6379/tcp testredis
0dbf7ea2178e registry "/entrypoint.sh /etc…" 4 days ago Up 4 seconds 0.0.0.0:5000->5000/tcp, [::]:5000->5000/tcp myregistry
5.指定 Docker 尝试重启容器的最大次数
[root@host1 ~]# docker update --restart=on-failure:3 testredis
testredis
6.停止该容器并删除该容器
[root@host1 ~]# docker stop redis && docker rm redis
Error response from daemon: No such container: redis
[root@host1 ~]# docker ps -a | grep redis
4793ed14dab7 redis "docker-entrypoint.s…" 7 minutes ago Up 4 minutes
6379/tcp testredis
[root@host1 ~]# docker stop 4793ed && docker rm 4793ed
4793ed
4793ed
注意:这里容器名搞错了,正确为 testredis ;或者用 ID。
更多推荐


所有评论(0)