Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

52,897

Downloads of v 26.0.0:

620

Last Update:

21 Mar 2024

Package Maintainer(s):

Software Author(s):

  • Docker Contributors

Tags:

docker devops containers

Docker Engine

  • 1
  • 2
  • 3

26.0.0 | Updated: 21 Mar 2024

Downloads:

52,897

Downloads of v 26.0.0:

620

Maintainer(s):

Software Author(s):

  • Docker Contributors

Docker Engine 26.0.0

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Resulted in Flagged as a Note:

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

Details
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 https://community.chocolatey.org/api/v2/)


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 https://community.chocolatey.org/api/v2/. 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'" 
$exitCode = $LASTEXITCODE

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

Exit $exitCode

- name: Install docker-engine
  win_chocolatey:
    name: docker-engine
    version: '26.0.0'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


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

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller docker-engine
{
    Name     = "docker-engine"
    Version  = "26.0.0"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


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

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved as a trusted package on 21 Mar 2024.

Description

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.

From v23 docker engine is installed into $env:ProgramFiles\docker (the default docker location). A shim is still generated for the docker cli.

Package Specific

This package by default creates the group docker-users and adds the installing user to it, you can customise this with package parameters. 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

Package Parameters

The following package parameters can be set:

  • /DockerGroup: - Name of the user group for using docker - defaults to "docker-users"
  • /noAddGroupUser - Prevent adding the current user to the DockerGroup
  • /StartService - Automatically start (or restart) the docker service after install (or upgrade)

To pass parameters, use --params "''" (e.g. choco install docker-engine [other options] --params="'/DockerGroup:my-docker-group /noAddGroupUser'").
To have choco remember parameters on upgrade, be sure to set choco feature enable -n=useRememberedArgumentsForUpgrades.

Please Note: If you change the DockerGroup having previously installed docker-engine, the daemon.json config file will not be overwritten, you will need to manually update it.


tools\chocolateyBeforeModify.ps1
# 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"
Test-DockerdConflict

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."
  }
}
tools\chocolateyInstall.ps1

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

$url = "https://download.docker.com/win/static/stable/x86_64/docker-26.0.0.zip" # download url, HTTPS preferred

$pp = Get-PackageParameters

If ( !$pp.DockerGroup ) {
    $pp.DockerGroup = "docker-users"
}

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

$packageArgs = @{
    PackageName   = $env:ChocolateyPackageName
    UnzipLocation = $env:ProgramFiles
    Url           = $url

    # You can also use checksum.exe (choco install checksum) and use it
    # e.g. checksum -t sha256 -f path\to\file
    Checksum      = '1145EE20BB88E25D3FD42D5D00E07488D69B54BC380BF51692517E4E5021C1E0'
    ChecksumType  = 'sha256'
}

Install-ChocolateyZipPackage @packageArgs # https://chocolatey.org/docs/helpers-install-chocolatey-zip-package

Install-BinFile -Name "docker" -Path "$env:ProgramFiles\docker\docker.exe"

# Set up user group for non admin usage
If (net localgroup | Select-String $($pp.DockerGroup) -Quiet) {
    Write-Host "$($pp.DockerGroup) group already exists"
}
Else {
    net localgroup $($pp.DockerGroup) /add /comment:"Users of Docker"
}
If ( !$pp.noAddGroupUser ) {
    If (net localgroup $($pp.DockerGroup) | Select-String $groupUser -Quiet) {
        Write-Host "$groupUser already in $($pp.DockerGroup) group"
    }
    Else {
        Write-Host "Adding $groupUser to $($pp.DockerGroup) group, you will need to log out and in to take effect"
        net localgroup $($pp.DockerGroup) $groupUser /add
    }
}

# Write config
$daemonConfig = @{"group" = $($pp.DockerGroup) }
$daemonFolder = "$env: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)
}

# From v23 the package is now installed in Program Files. So clean up old files/service from tools
If (Test-Path "$toolsDir\docker") {
    Write-output "Cleaning up old docker files..."
    Remove-Item "$toolsDir\docker" -Recurse -Force
}
If (Test-OurOldDockerd) {
    Write-output "Unregistering old docker service..."
    Start-ChocolateyProcessAsAdmin -Statements "delete docker" "C:\Windows\System32\sc.exe"
}

# 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"
}

If (!$pp.StartService) {
    Write-Host "$($env:ChocolateyPackageTitle) service created, start with: `sc start docker` "
}
Else {
    Write-output "Starting docker service..."
    Start-ChocolateyProcessAsAdmin -Statements "start docker" "C:\Windows\System32\sc.exe"
}
tools\chocolateyUninstall.ps1

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

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

Uninstall-BinFile -Name "docker"
Uninstall-ChocolateyZipPackage $env:ChocolateyPackageName "docker-$($env:ChocolateyPackageVersion).zip"
tools\helper.ps1

$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*"))
  }
  Else
  {
    #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' "$env:ProgramFiles") -Or (Test-ServicePath 'dockerd.exe' "$toolsDir")
}

Function Test-OurOldDockerd
{
  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 25.0.5 10 Thursday, March 21, 2024 Approved
Docker Engine 25.0.4 1284 Thursday, March 7, 2024 Approved
Docker Engine 25.0.3.20240227 612 Friday, March 1, 2024 Approved
Docker Engine 25.0.3 2147 Wednesday, February 7, 2024 Approved
Docker Engine 25.0.2 845 Thursday, February 1, 2024 Approved
Docker Engine 25.0.1 732 Wednesday, January 24, 2024 Approved
Docker Engine 25.0.0 281 Monday, January 22, 2024 Approved
Docker Engine 24.0.7.20231201 3155 Friday, December 1, 2023 Approved
Docker Engine 24.0.7 1319 Wednesday, November 15, 2023 Approved
Docker Engine 24.0.6 5975 Wednesday, September 13, 2023 Approved
Docker Engine 24.0.4 9644 Friday, July 14, 2023 Approved
Docker Engine 24.0.1 2767 Monday, May 22, 2023 Approved
Docker Engine 24.0.0 292 Wednesday, May 17, 2023 Approved
Docker Engine 23.0.6 237 Tuesday, May 16, 2023 Approved
Docker Engine 23.0.5 729 Tuesday, May 2, 2023 Approved
Docker Engine 23.0.4 656 Tuesday, April 18, 2023 Approved
Docker Engine 23.0.3 822 Wednesday, April 5, 2023 Approved
Docker Engine 23.0.2 614 Tuesday, March 28, 2023 Approved
Docker Engine 23.0.1 2101 Friday, February 10, 2023 Approved
Docker Engine 23.0.0 422 Friday, February 3, 2023 Approved
Docker Engine 20.10.24 163 Wednesday, April 5, 2023 Approved
Docker Engine 20.10.23 900 Friday, January 20, 2023 Approved
Docker Engine 20.10.22 1285 Friday, December 16, 2022 Approved
Docker Engine 20.10.21 41 Friday, December 16, 2022 Approved
Docker Engine 20.10.20 2129 Wednesday, October 19, 2022 Approved
Docker Engine 20.10.19 86 Wednesday, October 19, 2022 Approved
Docker Engine 20.10.18 2458 Friday, September 9, 2022 Approved
Docker Engine 20.10.17 2644 Thursday, June 9, 2022 Approved
Docker Engine 20.10.16 842 Friday, May 13, 2022 Approved
Docker Engine 20.10.15 279 Monday, May 9, 2022 Approved
Docker Engine 20.10.14 1843 Thursday, March 24, 2022 Approved
Docker Engine 20.10.13 557 Tuesday, March 15, 2022 Approved
Docker Engine 20.10.12 1192 Monday, January 31, 2022 Approved
Docker Engine 20.10.11 1544 Monday, November 29, 2021 Approved
Docker Engine 20.10.10 496 Wednesday, November 3, 2021 Approved
Docker Engine 20.10.9 440 Thursday, October 21, 2021 Approved
Docker Engine 20.10.8 734 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