docker 容器设置为开机启动方法

原因:我设置了 mysql 与 redis 容器但是没有设置开机启动 ,导致每次重启都需要手动去启动服务很麻烦。这篇博客记录我针对已有的容器设置开机启动的过程

确认待启动的容器

docker ps -a

更改启动容器启动策略

docker update --restart=always f22b1f5c7f07
docker update --restart=always 4df4a0094650
docker update --restart=always 38e41b93a263

为每个容器创建单元文件

paddy_manager

为每个容器创建一个Systemd服务单元文件。例如,对于paddy_manager,创建/etc/systemd/system/paddy_manager.service文件,内容如下:
 

[Unit]
Description=Paddy Manager Service
Requires=docker.service
After=docker.service

[Service]
Restart=aways
ExecStart=/usr/bin/docker start -a f22b1f5c7f07
ExecStop=/usr/bin/docker stop -t 2 f22b1f5c7f07

[Install]
WantedBy=default.target

对于其他容器也创建类似的文件,并相应地替换容器ID和服务描述。

redis         

[Unit]
Description=my-redis Service
Requires=docker.service
After=docker.service

[Service]
Restart=aways
ExecStart=/usr/bin/docker start -a 4df4a0094650
ExecStop=/usr/bin/docker stop -t 2 4df4a0094650

[Install]
WantedBy=default.target

   mysql

[Unit]
Description=mysql Service
Requires=docker.service
After=docker.service

[Service]
Restart=aways
ExecStart=/usr/bin/docker start -a 38e41b93a263
ExecStop=/usr/bin/docker stop -t 2 38e41b93a263

[Install]
WantedBy=default.target
  1. 启用并启动服务:

    对于每个服务单元文件执行以下命令:

    sudo systemctl daemon-reload
    sudo systemctl enable paddy_manager.service
    sudo systemctl start paddy_manager.service

如果paddy_manager容器是通过Systemd服务单元文件设置为开机启动的,您需要执行以下步骤来关闭其开机启动:

  1. 停用Systemd服务: 首先,您需要停用专门为paddy_manager创建的Systemd服务单元。在终端中运行以下命令:

    sudo systemctl disable paddy_manager.service

    这个命令会阻止paddy_manager服务在系统启动时自动启动。

  2. 检查服务状态: 可以通过下面的命令确认服务是否已经被设置为不自动启动:

    sudo systemctl is-enabled paddy_manager.service

    如果返回disabled,则表示开机启动已成功关闭

    sudo systemctl stop paddy_manager.service
    ​​​​​​​sudo rm /etc/systemd/system/paddy_manager.service
  3. 重新加载Systemd配置并查看更改: 最后,重新加载Systemd以应用更改,并检查是否有错误:

    sudo systemctl daemon-reload
    sudo systemctl status paddy_manager.service

完成这些步骤后,paddy_manager容器就不会再随系统启动自动启动了。记得根据实际情况替换命令中的paddy_manager.service为实际的服务单元文件名,如果有所不同的话。

与Docker的管理机制兼容

如果你发现你使用docker stop 停止了 容器之后,又被重复启动,不方便配置的话,就将

Restart=aways 

改为

Restart=on-failure

然后应用

sudo systemctl daemon-reload

 sudo systemctl restart nginx

Restart=on-failure 模式介绍

这样修改后,当您或其它管理系统明确执行停止操作时,容器将停止运行并且不会被自动重启。

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值