开机自启在很多时候非常有用,比如要执行某个计划任务,或者启动某个服务。在window操作系统中似乎很容易实现,但是在linux操作系统中该如何实现呢?

docker debian 开机启动脚本 linux docker开机自启_自动启动

事情的起因很简单,因为小编在docker中部署了onlyoffice镜像服务,但是每次linux操作系统重启之后,docker服务是自动启动了,但是onlyoffice容器却每次都是Exited 未运行的状态,导致外部nextcloud无法放到到该服务。必须手动启动onlyoffice的容器才可以,这样过于麻烦,于是需要设置自动启动,确保重启操作系统后该容器是自动启动的状态。

docker debian 开机启动脚本 linux docker开机自启_重启_02

首先当然就是编写shell脚本,也就是说通过shell脚本能够启动对应的服务,或者执行我们需要执行的命令,比如这里我们新建名为autoshell的脚本文件,编辑内容为:docker start docker start $(docker ps -a | awk '{ print $1}' | tail -n +2),也就是说启动所有的docker中的容器,docker的命令可以参考深入了解Docker,汇总Docker操作命令,你需要的都在这里。同时需要给autoshell.sh的脚本赋予执行权限,命令为:chmod +x /etc/autoshell/autoshell.sh

docker debian 开机启动脚本 linux docker开机自启_重启_03

方法一:修改/etc/rc.local

rc.local是Linux启动程序在login程序前执行的最后一个脚本,有的时候也将该文件称之为链接文件。使用命令vim /etc/rc.local,添加一行代码:/bin/bash /etc/autoshell/autoshell.sh,也就是在系统启动的时候调用执行autoshell.sh的脚本。

docker debian 开机启动脚本 linux docker开机自启_自动启动_04

同时,我们需要给rc.local文件赋予可执行权限,chmod +x /etc/rc.local。

docker debian 开机启动脚本 linux docker开机自启_linux docker加入系统启动_05

方法二:chkconfig管理

为了更好的测试,先取消方法一中在rc.local中添加的启动命令。

chkconfig:作用就是开机启动项的管理服务。(例如有些默认启动软件,linux有些软件安装之后,没有自启动,还可以查看和删除)。chkconfig中,我们只能在/etc/init.d中创建对应的脚本。使用命令:vim docker-onlyoffice,编写脚本:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)。

docker debian 开机启动脚本 linux docker开机自启_linux docker加入系统启动_06

脚本创建后,需要给创建的脚本赋予执行权限,命令为:chmod +x /etc/init.d/docker-onlyoffice。

docker debian 开机启动脚本 linux docker开机自启_docker_07

使用命令:chkconfig --add docker-onlyoffice,将该启动项添加,设置为开机启动,命令为:chkconfig docker-onlyoffice on。

docker debian 开机启动脚本 linux docker开机自启_重启_08

实际测试,另种方法都是可以实现自动启动脚本或者命令的目的,小编已经实际测试过了。希望能够帮助到大家,如果大家有任何问题,欢迎评论区留言讨论。