Ubuntu系统重启自动启动Docker容器

前言

之前文章实现了在 Ubuntu 服务器中使用 Docker Nginx 容器部署项目,项目部署好以后,重启以后服务就没了,每次还得手动启动 docker, 然后再启动 nginx 容器,手动操作很麻烦,在真实服务器的场景中运行的服务很多的,每次手动执行命令的方式启动根本不现实

接下来实现 Ubuntu 系统重启后自动重启 docker 中的 nginx 容器,使部署的前端项目能自动就能访问

前端破圈使用Docker Nginx容器部署项目🏴‍☠️

开始行动

1. 设置 docker 服务开机启动

使用 systemctl 命令(下面会对systemctl做对应的介绍和扩展)

bash 复制代码
$ systemctl enable docker.service

检查docker服务是否设置成功

bash 复制代码
$ systemctl is-enabled docker

如果输出 enabled 表示设置成功

2. 设置docker服务启动后容器也自动重启

使用 --restart=always 参数

2.1 如果容器已启动

使用 update 更新即可

bash 复制代码
$ docker update --restart=always <容器id>

2.2 如果容器未启动

在 docker run 的时候加上 --restart 参数

bash 复制代码
$ 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 命令

bash 复制代码
$ sudo systemctl start application.service

关闭 systemd 服务,使用 stop 命令

bash 复制代码
$ sudo systemctl stop application.service

重启服务和重载

如果运行的服务需要重启,可以使用 restart 命令

bash 复制代码
$ sudo systemctl restart application.service

如果运行的服务有问题,需要重新加载其配置文件(无需重新启动),可以使用重载 reload 命令启动该过程

bash 复制代码
$ sudo systemctl reload application.service

设置自动重启,取消自动重启

上面设置 docker 服务开机启动的时候,就是用的这个命令 enable

bash 复制代码
$ sudo systemctl enable application.service

使用 disable 取消(禁用)服务开机自动启动

bash 复制代码
$ sudo systemctl disable application.service

检查服务状态

bash 复制代码
$ systemctl status application.service

例如检查 docker 服务的运行状态

总结

到目前为止,了解到了如何在 Ubuntu 中设置 docker 服务的开机自启动,以及 systemctl 命令相关的常见用法。当然,关于管理系统服务和单元还有很多内容,如果后续实践有用到,也会定期整理分享出来

欢迎大家讨论交流,如果文章感觉有用,随手点个赞再走呗 ^_^ 🥰🥰

微信公众号:草帽Lufei

相关推荐
兰亭妙微UI设计公司19 分钟前
兰亭妙微ui设计公司分享:B端组件命名如何支持团队协作
前端·javascript·vue.js
GeW21 分钟前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by2099932 分钟前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
云和数据.ChenGuang44 分钟前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain
小大宇1 小时前
Vue知识点-ElementPlus-03提示框+询问+通知
前端·javascript·vue.js
cq林志炫1 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
步行cgn2 小时前
Axios 请求成功但页面不显示:两个前端错误的分析与修正
前端
无人生还别怕2 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
时间的情敌2 小时前
WebGIS + OpenLayers + GeoServer + PostGIS #量算 #点聚合
前端·geoserver·openlayers
杨浦老苏3 小时前
把项目管理搬回自己服务器:Windshift部署与避坑
docker·项目管理·群晖