Downloads of v 20.10.20:


Last Update:

19 Oct 2022

Package Maintainer(s):

Software Author(s):

  • Docker Contributors


docker devops containers

Docker Engine

  • 1
  • 2
  • 3

20.10.20 | Updated: 19 Oct 2022



Downloads of v 20.10.20:



Software Author(s):

  • Docker Contributors

  • 1
  • 2
  • 3
Docker Engine 20.10.20

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests

Validation Testing Passed

Verification Testing Passed


Scan Testing Successful:

No detections found in any package files

Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

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:


Deployment Method:

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

1. Enter Your Internal Repository Url

(this should look similar to

2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • 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. Copy Your Script

choco upgrade docker-engine -y --source="'INTERNAL REPO 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="'INTERNAL REPO URL'" 

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

Exit $exitCode

- name: Install docker-engine
    name: docker-engine
    version: '20.10.20'
    state: present

See docs at

chocolatey_package 'docker-engine' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '20.10.20'

See docs at

cChocoPackageInstaller docker-engine
    Name     = "docker-engine"
    Version  = "20.10.20"
    Source   = "INTERNAL REPO URL"

Requires cChoco DSC Resource. See docs at

package { 'docker-engine':
  ensure   => '20.10.20',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',

Requires Puppet Chocolatey Provider module. See docs at

4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved as a trusted package on 22 Oct 2022.


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.

This package creates the group docker-users and adds the installing user to it. In order to communicate with docker you will need to log out and back in.

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      = '11A7D4E19DFD182921CB528CF9722F30E204AC140FCAD298B18F5E2D63CD37FF'
  checksumType  = 'sha256'

Install-ChocolateyZipPackage @packageArgs #

# Ignore the CLI plugins for shim gen
$cliPlugins = get-childitem $toolsDir\docker\cli-plugins -include *.exe -recurse
foreach ($file in $cliPlugins) {
  #generate an ignore file
  New-Item "$file.ignore" -type file -force | Out-Null

# 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, you will need to log out and in to take effect"
  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.

Add to Builder Version Downloads Last Updated Status
Docker Engine 20.10.19 52 Wednesday, October 19, 2022 Approved
Docker Engine 20.10.18 1620 Friday, September 9, 2022 Approved
Docker Engine 20.10.17 2452 Thursday, June 9, 2022 Approved
Docker Engine 20.10.16 807 Friday, May 13, 2022 Approved
Docker Engine 20.10.15 250 Monday, May 9, 2022 Approved
Docker Engine 20.10.14 1653 Thursday, March 24, 2022 Approved
Docker Engine 20.10.13 440 Tuesday, March 15, 2022 Approved
Docker Engine 20.10.12 1128 Monday, January 31, 2022 Approved
Docker Engine 20.10.11 1460 Monday, November 29, 2021 Approved
Docker Engine 20.10.10 462 Wednesday, November 3, 2021 Approved
Docker Engine 20.10.9 264 Thursday, October 21, 2021 Approved
Docker Engine 20.10.8 654 Wednesday, September 22, 2021 Approved

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