【问题标题】:How to restart docker for windows process in powershell?如何在powershell中为windows进程重新启动docker?
【发布时间】:2019-01-16 12:24:59
【问题描述】:

我想在 powershell 中重启docker for windows(现在称为 Docker Desktop)。

我想用 PowerShell 中的一个命令来完成。

我可以实现它吗?

使用Restart-Service *docker*时:

【问题讨论】:

  • Restart-Service *docker* 也许?
  • @Theo 可惜无效...
  • Docker 可以通过 powershell 来停止和启动,类似的想法分享在这篇文章thecodeframework.com/…

标签: powershell docker docker-for-windows


【解决方案1】:

杀死并重启docker进程:

$processes = Get-Process "*docker desktop*"
if ($processes.Count -gt 0)
{
    $processes[0].Kill()
    $processes[0].WaitForExit()
}
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"

if 子句中,我检查是否找到任何正在运行的 docker 进程。运行的“Docker Desktop”实例不应超过 1 个,这样您就可以杀死列表中的第一个实例。

要重新启动,您需要知道计算机上“Docker Desktop.exe”文件的完整路径。

【讨论】:

  • 更新后实际上是Docker Desktop而不是Docker for Windows
【解决方案2】:

您可以在 powershell 中使用:

restart-service *docker*

或进入 Docker 快速入门终端:

docker-machine restart

【讨论】:

  • 无法工作...只需杀死 docker 守护进程,但 docker 无法重新启动。
  • restart-service docker 实际上会停止并启动 com.docker.service,这正是我们所追求的。但这并不成功;完成后,您的 docker 坏了(无法连接,无法执行任何操作)
  • 虽然这确实重新启动了 docker 桌面服务 (com.docker.service),但它不会导致 docker 正常工作。我很确定您必须重新创建 Hyper-V 实例才能做到这一点?
  • "& $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon" 解决了问题,但您可能需要运行两次。
【解决方案3】:

与上面 Sebastian L 的评论类似,但如果您知道自己当前运行的是 Linux 容器还是 Windows 容器,它会更简洁、更快。

如果运行 Linux 容器

    Stop-Service *docker*        
    Start-Service *docker*
    &$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchLinuxEngine

如果运行 Windows 容器

    Stop-Service *docker*        
    Start-Service *docker*
    &$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchWindowsEngine

-SwitchDaemon 从一个切换到另一个(Linux 到 Windows 或 Windows 到 Linux),这就是为什么你必须做两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多