J'essaie de comprendre comment redémarrer docker dans la ligne de commande afin que je puisse faire un script bat pour le redémarrer et démarrer quelques conteneurs.
J'ai créé une invite de commande à l'aide de l'accès administrateur et j'ai exécuté ce qui suit
PS C:\Windows\system32> net stop com.docker.service
The Docker for Windows Service service is stopping.
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
The Docker for Windows Service service was stopped successfully.
PS C:\Windows\system32> net start com.docker.service
The Docker for Windows Service service is starting.
The Docker for Windows Service service was started successfully.
PS C:\Windows\system32> docker ps
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error ma
y also indicate that the docker daemon is not running.
PS C:\Windows\system32>
Remarque: je peux le redémarrer correctement à l'aide de l'application Docker Windows. Cependant, je dois faire cette ligne de commande.
Contexte pour quiconque se demande pourquoi je redémarre docker Docker ne démarre pas les conteneurs après l'arrêt de Win 10 et la mise sous tension. . J'en ai marre de le faire à chaque fois que je redémarre, alors j'espérais créer un fichier bat que je pourrais simplement lancer.
Il s'agit de versions plus récentes de Docker pour Windows Desktop (Docker Community Edition 2.0.0.3 2019-02-15)
net stop docker
net stop com.docker.service
taskkill /IM "dockerd.exe" /F
taskkill /IM "Docker for Windows.exe" /F
net start docker
net start com.docker.service
"c:\program files\docker\docker\Docker for Windows.exe"
Si vous pouvez utiliser Powershell comme ligne de commande Windows, vous pouvez obtenir un résultat plus contrôlé et correct (basé sur la réponse de @ sabujp). Cela utilise également Docker Desktop 2.1.0.1 (à jour au 2019-08-19).
Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Restarting docker"
foreach($svc in (Get-Service | Where-Object {$_.name -ilike "*docker*" -and $_.Status -ieq "Running"}))
{
$svc | Stop-Service -ErrorAction Continue -Confirm:$false -Force
$svc.WaitForStatus('Stopped','00:00:20')
}
Get-Process | Where-Object {$_.Name -ilike "*docker*"} | Stop-Process -ErrorAction Continue -Confirm:$false -Force
foreach($svc in (Get-Service | Where-Object {$_.name -ilike "*docker*" -and $_.Status -ieq "Stopped"} ))
{
$svc | Start-Service
$svc.WaitForStatus('Running','00:00:20')
}
Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Starting Docker Desktop"
& "C:\Program Files\Docker\Docker\Docker Desktop.exe"
$startTimeout = [DateTime]::Now.AddSeconds(90)
$timeoutHit = $true
while ((Get-Date) -le $startTimeout)
{
Start-Sleep -Seconds 10
$ErrorActionPreference = 'Continue'
try
{
$info = (docker info)
Write-Verbose "$((Get-Date).ToString("HH:mm:ss")) - `tDocker info executed. Is Error?: $($info -ilike "*error*"). Result was: $info"
if ($info -ilike "*error*")
{
Write-Verbose "$((Get-Date).ToString("HH:mm:ss")) - `tDocker info had an error. throwing..."
throw "Error running info command $info"
}
$timeoutHit = $false
break
}
catch
{
if (($_ -ilike "*error during connect*") -or ($_ -ilike "*errors pretty printing info*") -or ($_ -ilike "*Error running info command*"))
{
Write-Output "$((Get-Date).ToString("HH:mm:ss")) -`t Docker Desktop startup not yet completed, waiting and checking again"
}
else
{
Write-Output "Unexpected Error: `n $_"
return
}
}
$ErrorActionPreference = 'Stop'
}
if ($timeoutHit -eq $true)
{
throw "Timeout hit waiting for docker to startup"
}
Write-Output "$((Get-Date).ToString("HH:mm:ss")) - Docker restarted"
J'ai désactivé " démarrage rapide " et je n'ai plus ce problème mais YMMV.