Jump to content

关于UNRAID启停时候,docker 和VM关闭顺序的问题。


Go to solution Solved by anpple,

Recommended Posts

之前用的开心版 那个docker延迟启动的功能一直不好用。

后面用的是 use scripts这个插件 让他在开机多少分钟后重启一些docker 

虽然能解决启动的问题。 

但是 目前发现关机的时候也有问题 , 如果一键点关机 关机时间特别久不说,还有些docker关不掉

 

我的硬盘是直通控制器给黑裙的, unraid的docker vm文件都在阵列的sdd里。

 

但是一些docker 会映射 群晖NFS挂载到docker上的路径。 这样导致挂机的时候出问题。

 

不知道能不能设置虚拟机关机延迟, 让docker先关机  然后再虚拟机关机,  启动的是时候 虚拟机先启动 docker延迟启动。

 

 

2024-04-18_03-01-23.png.0ad9081f2ac83fe4cd5dfe304c3d42ca.png之前用过这个等待,但是在开机的时候 这里一直在闪烁。和秒钟同步。 很诡异  也不知道是不是开心的问题。

 

Link to comment
  • Solution

1.创建关机脚本

打开用户脚本插件,并创建一个新脚本,例如命名为 “Shutdown Sequence”。

在脚本中,添加以下内容来控制关闭顺序:

#!/bin/bash
# 停止所有 Docker 容器
docker stop $(docker ps -a -q)

# 等待30
sleep 30

# 关闭所有虚拟机
for vm in $(virsh list --name --state-running); do
    virsh shutdown $vm
done

# 等待虚拟机完全关闭
while [ ! -z "$(virsh list --name --state-running)" ]; do
    sleep 10
done

 

2.创建启动脚本

创建另一个脚本,例如命名为 “Startup Sequence”。

在脚本中,添加以下内容来控制启动顺序:

#!/bin/bash
# 启动所有虚拟机
for vm in $(virsh list --name --state-shutoff); do
    virsh start $vm
done

# 等待虚拟机启动
sleep 60

# 启动 Docker 服务(如果已经由系统自动启动则不需要)
# systemctl start docker

# 启动所有 Docker 容器
docker start $(docker ps -a -q)

 

以上仅作参考,自己按需求修改延迟时间来控制

Link to comment
On 4/18/2024 at 10:17 AM, anpple said:

1.创建关机脚本

打开用户脚本插件,并创建一个新脚本,例如命名为 “Shutdown Sequence”。

在脚本中,添加以下内容来控制关闭顺序:

#!/bin/bash
# 停止所有 Docker 容器
docker stop $(docker ps -a -q)

# 等待30
sleep 30

# 关闭所有虚拟机
for vm in $(virsh list --name --state-running); do
    virsh shutdown $vm
done

# 等待虚拟机完全关闭
while [ ! -z "$(virsh list --name --state-running)" ]; do
    sleep 10
done

 

2.创建启动脚本

创建另一个脚本,例如命名为 “Startup Sequence”。

在脚本中,添加以下内容来控制启动顺序:

#!/bin/bash
# 启动所有虚拟机
for vm in $(virsh list --name --state-shutoff); do
    virsh start $vm
done

# 等待虚拟机启动
sleep 60

# 启动 Docker 服务(如果已经由系统自动启动则不需要)
# systemctl start docker

# 启动所有 Docker 容器
docker start $(docker ps -a -q)

 

以上仅作参考,自己按需求修改延迟时间来控制

# 关闭所有虚拟机
for vm in $(virsh list --name --state-running); do

#这上面这行括号里的--name --  这个name是否要替换成虚拟机具体的名字呢?比如 群晖叫DMS,变成下面这种。

for vm in $(virsh list --DSM--state-running); do


    virsh shutdown $vm
done

 

============================================================================================

开机这个脚本感觉还是会出现问题。 因为docker里还存在一些优先级。比如alist要在CD2前面启动,CD2 要在emby服务器前面启动。

比较复杂了 。不然他们之间的挂载就会出问题。

 

你们的自动挂载外部设备也是通过脚本实现的吗?  unraid下的那个挂载插件 

Unassigned Devices

是不是也不起作用啊?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...