前言
之前文章实现了在 Ubuntu
服务器中使用 Docker
Nginx
容器部署项目,项目部署好以后,重启以后服务就没了,每次还得手动启动 docker
, 然后再启动 nginx
容器,手动操作很麻烦,在真实服务器的场景中运行的服务很多的,每次手动执行命令的方式启动根本不现实
接下来实现 Ubuntu
系统重启后自动重启 docker
中的 nginx
容器,使部署的前端项目能自动就能访问
开始行动
1. 设置 docker 服务开机启动
使用 systemctl
命令(下面会对systemctl
做对应的介绍和扩展)
$ systemctl enable docker.service
检查docker服务是否设置成功
$ systemctl is-enabled docker
如果输出 enabled
表示设置成功
2. 设置docker服务启动后容器也自动重启
使用 --restart=always
参数
2.1 如果容器已启动
使用 update
更新即可
$ docker update --restart=always <容器id>
2.2 如果容器未启动
在 docker run
的时候加上 --restart
参数
$ docker run --name nginx-server --restart=always -p 80:80 -v /home/w/Desktop/code:/workspace -d nginx
小结
这时候重启 Ubuntu
系统就能自动重启对应的 docker nginx
容器了,部署的前端站点也可以正常访问。接下来将对 systemctl
命令的常用场景进行补充和扩展
Systemd
systemd
是一个init系统和系统管理器,已广泛成为Linux发行版的新标准
systemctl
systemctl
命令,它是用于控制init系统的中央管理工具。刚才设置服务开机启动就是用的这个命令,关于这个命令的使用需要用 root
用户身份运行,如果不是,需要使用 sudo
,否则会影响操作状态
开启和停止服务
要启动 systemd
服务,使用 start
命令
$ sudo systemctl start application.service
关闭 systemd
服务,使用 stop
命令
$ sudo systemctl stop application.service
重启服务和重载
如果运行的服务需要重启,可以使用 restart
命令
$ sudo systemctl restart application.service
如果运行的服务有问题,需要重新加载其配置文件(无需重新启动),可以使用重载 reload
命令启动该过程
$ sudo systemctl reload application.service
设置自动重启,取消自动重启
上面设置 docker
服务开机启动的时候,就是用的这个命令 enable
$ sudo systemctl enable application.service
使用 disable
取消(禁用)服务开机自动启动
$ sudo systemctl disable application.service
检查服务状态
$ systemctl status application.service
例如检查 docker
服务的运行状态
总结
到目前为止,了解到了如何在 Ubuntu
中设置 docker
服务的开机自启动,以及 systemctl
命令相关的常见用法。当然,关于管理系统服务和单元还有很多内容,如果后续实践有用到,也会定期整理分享出来