1. 需求
有台不是很重要的服务器上面部署了几个docker,由于没有ups经常会断电,服务器已经设置了自动来电启动.但有一些已经部署且正常运行的容器无法自动启动.
2. 实现
2.1 Docker服务的自启动
systemctl is-enabled docker
如果提示enabled,说明已经是开启自启动了
如果是disabled,那么就执行以下命令,启动并将docker服务设置为开机自启动
systemctl enable --now docker
2.2 容器设置成自启动
2.2.1 方法1
- 获取容器id或名字
这里的0af13655f6d6就是docker的id
mysql就是这个容器的名字
root@Ubuntu-1:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0af13655f6d6 mysql:5.7.34 "docker-entrypoint.s…" 16 hours ago Exited (0) 10 minutes ago mysql
- update
这里用容器名字或者容器id都可以
docker update 0af13655f6d6 --restart=always
此时容器已经会随着docker服务自己启动了,可以重启下docker service,此时容器就自己起来了
root@Ubuntu-1:~# systemctl restart docker
root@Ubuntu-1:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0af13655f6d6 mysql:5.7.34 "docker-entrypoint.s…" 16 hours ago Up 2 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
2. 方法2
这个方法稍微麻烦一些,但更直观.如果需要修改其他参数也不用特意去记具体参数.
不过话说回来,如果不记得参数看到这个json应该也是一脸懵的…
vi /var/lib/docker/containers/0af13655f6d67350957e8825fa7631db6b5b882856765cc33c3be453ef0cbb86/hostconfig.json
修改no为always即可