代码之家  ›  专栏  ›  技术社区  ›  Linda Lawton - DaImTo

重新启动docker Windows 10命令行

  •  3
  • Linda Lawton - DaImTo  · 技术社区  · 7 年前

    我正在试图弄清楚如何在命令行中重新启动docker,这样我就可以制作一个bat脚本来重新启动它,并启动几个容器。

    我使用admin access创建了一个dos提示符,并运行以下命令

    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>
    

    注意:我可以使用docker windows应用程序重新启动它。但是我需要做这个命令。

    任何想知道我为什么重新启动docker的人的背景 Docker won't start containers after win 10 shutdown and power up. .每次重新启动时都这么做,我都烦死了,所以我希望创建一个bat文件,这样我就可以开始了。

    1 回复  |  直到 7 年前
        1
  •  22
  •   sabujp    7 年前

    这是最新版本的Docker for 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"
    
        2
  •  17
  •   StingyJack    6 年前

    如果可以将Powershell用作windows命令行,则可以获得更可控且正确的结果(基于@sabujp的答案)。这也使用了Docker Desktop 2.1.0.1(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"
    
        3
  •  0
  •   slim Deepak    7 年前

    “我残疾了” fast startup “我不再有这个问题,而是YMMV。