如何在Windows重新启动时重新启动Docker Containers?

5uzkadbs  于 2022-10-04  发布在  Windows
关注(0)|答案(1)|浏览(457)

这听起来可能是一个已知的问题,但问题是,当系统重新启动时,容器不会启动,看起来像是处于已退出状态。我们使用docker-compose来启动容器(总共大约有10个容器作为PowerShell脚本启动)。

Docker文档说要使用RESTART_POLICY,但这主要是处理容器崩溃。https://docs.docker.com/compose/compose-file。在配置文件中也设置了重启始终标志,但似乎没有帮助,我尝试设置任务调度程序,但仍然存在相同的问题。

我想知道是否有一种方法可以优雅地启动容器,或者是否可以在任务调度器中设置它?

1l5u6lss

1l5u6lss1#

您可以创建和调度任务,以便首先在系统启动时停止容器,然后创建另一个任务,以便在前一个任务成功完成时调度事件。

对于另一个任务,重要的是以XML格式编辑新的事件筛选器,并在成功完成后更新原始任务,我们希望触发一个新任务。

<QueryList>
<Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
<Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and Task = 102]]</Select>
</Query>
</QueryList>

您需要手动编辑查询,并替换XML过滤器中的以下行:


* [System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and Task = 102]]

有:


* [EventData [@Name='TaskSuccessEvent'][Data[@Name='TaskName']='OriginalTask']]

新任务的事件筛选器详细信息如下:

Events Logs: Microsoft-Windows-TaskScheduler/Operational
Event source: TaskScheduler
Task category: Task completed (status 102)

完成状态码为102的原始任务的事件ID:

EventID: 102
Provider-Name: Microsoft-Windows-TaskScheduler
Channel: Microsoft-Windows-TaskScheduler/Operational
TaskName: OriginalTask

最后,使用程序可执行路径和脚本/命令(作为参数传递)添加操作细节,并保存更改,以便能够以最高权限运行。

相关问题