GitHub Action to set up (download and install) Docker CE. Works on Linux, macOS and Windows.
Note
This action is useful if you want to pin against a specific Docker version or set up a custom daemon configuration or if Docker is not available on your runner. If you're using GitHub-hosted runners on Linux or Windows, Docker is already up and running, so it might not be necessary to use this action.
Warning
Does not work on macOS runners with ARM architecture (no nested virtualization):
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v4
You can configure the Docker daemon
using the daemon-config
input. In the following example, we configure the
Docker daemon to enable debug and the containerd image store
feature:
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v4
with:
daemon-config: |
{
"debug": true,
"features": {
"containerd-snapshotter": true
}
}
You can define custom limactl start
arguments
using the LIMA_START_ARGS
environment variable to customize the VM:
name: ci
on:
push:
jobs:
docker:
runs-on: macos-latest
steps:
-
name: Set up Docker
uses: docker/setup-docker-action@v4
env:
LIMA_START_ARGS: --cpus 4 --memory 8
The following inputs can be used as step.with
keys
Name | Type | Default | Description |
---|---|---|---|
version |
String | latest |
Docker version to use. See inputs.version. |
channel |
String | stable |
Docker CE channel (stable or test ). Only applicable to type=archive |
daemon-config |
String | Docker daemon JSON configuration | |
tcp-port |
Number | TCP port to expose the Docker API locally | |
context |
String | setup-docker-action |
Docker context name. |
set-host |
Bool | false |
Set DOCKER_HOST environment variable to docker socket path. |
rootless |
Bool | false |
Start daemon in rootless mode |
By default, the latest stable version of Docker is fetched from download.docker.com.
You can specify a specific version number (e.g. v27.4.0
).
Which is a shorthand for the full comma separated value:
type=archive,channel=stable,version=v27.4.0
You can also use this full csv format instead.
Currently supported source types are:
archive
image
Key | Default | Description |
---|---|---|
type |
archive |
The source type of the Docker binaries. Possible values are archive and image . |
channel |
stable |
The download.docker.com channel (stable or test ). |
version |
latest |
The Docker version to use. |
Examples:
# last stable released version
version: latest
version: type=archive # same as above
version: version=latest # same as above
version: type=archive,version=latest # same as above
# v27.3.0-rc.1 from test channel
version: type=archive,version=27.3.0-rc.1,channel=test
Other possible source type is image
which will pull the Docker binaries from the moby/moby-bin
and
dockereng/cli-bin
Docker Hub repositories.
The advantage of using this source type is that these images are built by the Moby and Docker CI pipelines
for each branch and PR, so you can use the tag
input to install a specific version or branch (e.g. master
).
Key | Default | Description |
---|---|---|
tag |
latest |
The image tag to use. |
See https://hub.docker.com/r/moby/moby-bin/tags and https://hub.docker.com/r/dockereng/cli-bin/tags for available tags.
Examples:
# install last stable released version from bin images
version: type=image
version: type=image,tag=latest # same as above
# a cutting-edge version from the `master` branch
version: type=image,tag=master
# install v27.4.0 from bin images
version: type=image,tag=27.4.0
The following outputs are available
Name | Type | Description |
---|---|---|
sock |
String | Docker socket path |
tcp |
String | Docker TCP address if tcp-port is set |
Want to contribute? Awesome! You can find information about contributing to this project in the CONTRIBUTING.md
Apache-2.0. See LICENSE
for more details.