Downloads of v 20.10.8:


Last Update:

22 Sep 2021

Package Maintainer(s):

Software Author(s):

  • Docker Contributors


docker devops containers

Docker Engine

  • 1
  • 2
  • 3

20.10.8 | Updated: 22 Sep 2021



Downloads of v 20.10.8:



Software Author(s):

  • Docker Contributors

  • 1
  • 2
  • 3
Docker Engine 20.10.8

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed

Validation Testing Passed

Verification Testing Passed


Scan Testing Resulted in Flagged as a Note:

At least one file within this package has greater than 0 detections, but less than 5


To install Docker Engine, run the following command from the command line or from PowerShell:


To upgrade Docker Engine, run the following command from the command line or from PowerShell:


To uninstall Docker Engine, run the following command from the command line or from PowerShell:


NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to

4. Choose your deployment method:

choco upgrade docker-engine -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:

choco upgrade docker-engine -y --source="'STEP 3 URL'"

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0

Exit $exitCode

- name: Ensure docker-engine installed
    name: docker-engine
    state: present
    version: 20.10.8
    source: STEP 3 URL

See docs at

chocolatey_package 'docker-engine' do
  action    :install
  version  '20.10.8'
  source   'STEP 3 URL'

See docs at

    Name: docker-engine,
    Version: 20.10.8,
    Source: STEP 3 URL

Requires Otter Chocolatey Extension. See docs at

cChocoPackageInstaller docker-engine
   Name     = 'docker-engine'
   Ensure   = 'Present'
   Version  = '20.10.8'
   Source   = 'STEP 3 URL'

Requires cChoco DSC Resource. See docs at

package { 'docker-engine':
  provider => 'chocolatey',
  ensure   => '20.10.8',
  source   => 'STEP 3 URL',

Requires Puppet Chocolatey Provider module. See docs at

salt '*' chocolatey.install docker-engine version="20.10.8" source="STEP 3 URL"

See docs at

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

There are versions of this package awaiting moderation . See the Version History section below.

This package was approved by moderator TheCakeIsNaOH on 23 Sep 2021.


Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. This package contains the docker engine for Windows to run Windows containers on Windows hosts.

NOTE: Docker engine for Windows is is simply the service to run containers. You might want to have a look at the "docker-desktop" package for better usability.

Please Note: The docker engine requires the Windows Features: Containers and Microsoft-Hyper-V to be installed in order to function correctly. You can install these with the chocolatey command:
choco install Containers Microsoft-Hyper-V --source windowsfeatures

# This runs in 0.9.10+ before upgrade and uninstall.
# Use this file to do things like stop services prior to upgrade or uninstall.
# NOTE: It is an anti-pattern to call chocolateyUninstall.ps1 from here. If you
#  need to uninstall an MSI prior to upgrade, put the functionality in this
#  file without calling the uninstall script. Make it idempotent in the
#  uninstall script so that it doesn't fail when it is already uninstalled.
# NOTE: For upgrades - like the uninstall script, this script always runs from
#  the currently installed version, not from the new upgraded package version.

$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
. "$toolsDir\helper.ps1"

If ((Test-OurDockerd) -AND (Test-DockerdRunning))
  #Shutdown and unregister service for upgrade
  Write-output "Stopping docker service..."
  Start-ChocolateyProcessAsAdmin -Statements "stop docker" "C:\Windows\System32\sc.exe"
  Start-Sleep -seconds 3
  If (-not (Test-DockerdStopped))
    Throw "Could not stop the docker service, please stop manually and retry this package."

$ErrorActionPreference = 'Stop'; # stop on all errors
$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
. "$toolsDir\helper.ps1"

$url = "$($env:ChocolateyPackageVersion).zip" # download url, HTTPS preferred

$dockerdPath = Join-Path $toolsDir "docker\dockerd.exe"
$dockerGroup = "docker-users"
$groupUser = $env:USER_NAME

$packageArgs = @{
  packageName   = $env:ChocolateyPackageName
  unzipLocation = $toolsDir
  url           = $url

  # You can also use checksum.exe (choco install checksum) and use it
  # e.g. checksum -t sha256 -f path\to\file
  checksum      = 'D77503AE5D7BB2944019C4D521FAC4FDF6FC6E970865D93BE05007F2363C8144'
  checksumType  = 'sha256'

Install-ChocolateyZipPackage @packageArgs #

# Set up user group for non admin usage
If (net localgroup | Select-String $dockerGroup -Quiet) {
  Write-Host "$dockerGroup group already exists"
} Else {
  net localgroup $dockerGroup /add /comment:"Users of Docker"
If (net localgroup $dockerGroup | Select-String $groupUser -Quiet) {
  Write-Host "$groupUser already in $dockerGroup group"
} Else {
  Write-Host "Adding $groupUser to $dockerGroup group"
  net localgroup $dockerGroup $groupUser /add

# Write config
$daemonConfig = @{"group"=$dockerGroup}
$daemonFolder = "C:\ProgramData\docker\config\"
$daemonFile = Join-Path $daemonFolder "daemon.json"
If (Test-Path $daemonFile) {
  Write-Host "Config file '$daemonFile' already exists, not overwriting"
} Else {
  If (-not (Test-Path daemonFolder)) {
    New-Item -ItemType Directory -Path $daemonFolder
  $jsonContent = $daemonConfig | ConvertTo-Json -Depth 10
  $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
  [IO.File]::WriteAllLines($daemonFile, $jsonContent, $Utf8NoBomEncoding)

# Install service if not already there, conflict check at start also means no others.
If (-not (Test-OurDockerd)) {
  $scArgs = "create docker binpath= `"$dockerdPath --run-service`" start= auto displayname= `"$($env:ChocolateyPackageTitle)`""
  Start-ChocolateyProcessAsAdmin -Statements "$scArgs" "C:\Windows\System32\sc.exe"
  Write-Host "$($env:ChocolateyPackageTitle) service created, start with: `sc start docker` "

$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
. "$toolsDir\helper.ps1"

If (Test-OurDockerd)
  Write-output "Unregistering docker service..."
  Start-ChocolateyProcessAsAdmin -Statements "delete docker" "C:\Windows\System32\sc.exe"

$EditionId = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name 'EditionID').EditionId
$RunningOnNano = $False
If ($EditionId -ilike '*Nano*') {
  $RunningOnNano = $True

Function Test-ServicePath ($ServiceEXE, $FolderToCheck)
  if ($RunningOnNano) {
    #The NANO TP5 Compatible Way:
    Return ([bool](@(wmic service | Where-Object {$_ -ilike "*$ServiceEXE*"}) -ilike "*$FolderToCheck*"))
    #The modern way:
    Return ([bool]((Get-WmiObject win32_service | Where-Object {$_.PathName -ilike "*$ServiceEXE*"} | Select-Object -expand PathName) -ilike "*$FolderToCheck*"))

Function Test-OurDockerd
  return Test-ServicePath 'dockerd.exe' "$toolsDir"

Function Test-DockerdConflict
  If (-not (Test-OurDockerd) -AND (sc.exe query docker | Select-String 'SERVICE_NAME: docker' -Quiet))
    $ExistingDockerInstancePath = Get-ItemProperty hklm:\system\currentcontrolset\services\* | Where-Object {($_.ImagePath -ilike '*dockerd.exe*')} | Select-Object -expand ImagePath
    Throw "You have requested that the docker service be installed, but this system appears to have an instance of an docker service configured for another folder ($ExistingDockerInstancePath). You will need to remove that instance of Docker to use the one that comes with this package."

Function Test-DockerdRunning
  return [bool](C:\Windows\System32\sc.exe query docker | Select-String 'RUNNING' -Quiet)

Function Test-DockerdStopped
  return [bool](C:\Windows\System32\sc.exe query docker | Select-String 'STOPPED' -Quiet)

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status
Docker Engine 20.10.9 7 Thursday, October 21, 2021 Ready

This package has no dependencies.

Discussion for the Docker Engine Package

Ground Rules:

  • This discussion is only about Docker Engine and the Docker Engine package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Docker Engine, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus