You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux虚拟机关机前停止Docker容器失败的问题排查

解决关机时Docker服务先停止导致脚本无法连接的问题

问题根源

关机时systemd默认的服务停止顺序未保障自定义服务在Docker服务之前执行,导致Docker已停止后脚本才尝试连接Docker sock,出现EOF错误。

修改systemd服务配置

编辑/etc/systemd/system/unmount-disks.service文件,替换为以下内容:

[Unit]
Description=Stop Docker containers before system shutdown
Requires=docker.service
Before=docker.service shutdown.target
DefaultDependencies=no

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStop=/usr/local/bin/unmount_disks.sh

[Install]
WantedBy=multi-user.target

关键参数说明

  • DefaultDependencies=no:禁用systemd默认关机依赖,避免服务被延后执行
  • Requires=docker.service:确保Docker服务处于活跃状态时才执行脚本
  • Before=docker.service shutdown.target:强制脚本在Docker服务停止、系统关机前执行
  • Type=oneshot:适配一次性执行的脚本类型
  • RemainAfterExit=yes:让systemd认为服务始终活跃,确保关机时触发ExecStop命令

生效配置并测试

执行以下命令重新加载systemd配置并启用服务:

systemctl daemon-reload
systemctl enable unmount-disks.service

之后可尝试重启或关机,验证脚本是否能正常停止Docker容器,不再出现连接错误。

内容的提问来源于stack exchange,提问作者Alts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 13:14:55