Как перезапустить докер для процесса windows в powershell?
4 ответа
Это может быть немного уродливым решением, но оно работает для меня:
$processes = Get-Process "*docker for windows*"
if ($processes.Count -gt 0)
{
$processes[0].Kill()
$processes[0].WaitForExit()
}
Start-Process "C:\Program Files\Docker\Docker\Docker for Windows.exe"
В предложении if я проверяю, был ли найден какой-либо запущенный процесс. Никогда не должно быть запущено более одного экземпляра "Docker для Windows", чтобы вы могли затем убить первый в списке.
Для перезагрузки вам необходимо знать полный путь к файлу "Docker for Windows.exe" на вашем компьютере.
В Windows откройте рабочий стол Docker и щелкните значок отладки, а затем перезапустите. Вы также можете рассмотреть «сброс к заводским настройкам».
Вы можете использовать в PowerShell:
restart-service *docker*
Или в терминале Docker QuickStart:
docker-machine restart
Подобно комментарию Себастьяна 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), поэтому вам нужно сделать это дважды.