docker 容器内手动设置服务自启动

本文详细描述了如何在不依赖DockerFile的情况下,在Docker容器中设置服务如Cron定期自动启动,包括创建执行脚本、修改权限、添加至.bashrc以实现开机自启动的过程。

需求描述:不使用DockerFile实现容器内的服务自动启动

1、创建执行程序,以crond为例

//进入容器xxx
docker exec -it xxx /bin/sh
//切换root账户
bash
//创建自动执行文件
vim /root/cron.sh

2、自动执行文件内容

crond start

3、修改执行文件权限

chmod +x /root/cron.sh

4、把执行文件添加到开机自启动文件

//.bashrc为docker容器开启自启动文件
vim /root/.bashrc

把一下内容添加到.bashrc文件内容之下

if [ -f /root/cron.sh ]; then
      ./root/cron.sh
fi
### 设置Docker容器在系统启动时自动运行 为了使Docker容器能够在系统启动时自动运行,通常的做法是在启动Docker服务之后配置特定的容器随系统一同启动。这可以通过`docker update`命令结合`--restart-policy`选项来实现,也可以通过定义Docker Compose文件中的重启策略。 #### 方法一:使用 `docker run` 命令指定重启策略 当首次启动容器时,在`docker run`命令中加入`--restart unless-stopped`参数可以确保该容器会在主机重新启动后自动恢复运行[^1]: ```bash docker run --name my_container --restart unless-stopped -d my_image ``` 此命令会创建并命名一个新的名为`my_container`的容器实例,并应用了一个除非被手动停止否则总是尝试重启的策略。 #### 方法二:利用 Docker Compose 文件设定重启策略 对于更复杂的多容器应用程序部署场景,则推荐采用Docker Compose的方式来进行管理。编辑`docker-compose.yml`文件,为所需的服务添加`restart: unless-stopped`属性: ```yaml version: '3' services: webapp: image: "example/webapp" restart: unless-stopped ``` 保存更改后的YAML文件并通过执行`docker-compose up -d`命令来更新服务状态,这样就能保证所描述的服务将在下次开机时自启[^3]。 请注意,上述两种方法均依赖于Docker守护进程本身已经设置成开机即启动的状态。如果尚未完成这项工作,则需先按照如下指令操作以开启此项功能: ```bash systemctl start docker systemctl enable docker ``` 这些命令用于立即激活Docker服务以及将其设为默认引导加载项的一部分,从而保障后续任何基于它的自动化流程能够顺利运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值