Skip to content

crazy-max/ghaction-setup-docker

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

GitHub release GitHub marketplace CI workflow Test workflow Codecov

About

GitHub Action to set up (download and install) Docker CE. Works on Linux, macOS and Windows.

Warning

Does not work on macOS runners with ARM architecture (no nested virtualization):

Screenshot


Usage

Quick start

name: ci

on:
  push:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      -
        name: Set up Docker
        uses: crazy-max/ghaction-setup-docker@v3

Important

macOS runners hang with latest QEMU 9.1.0. You need to install QEMU 9.0.2 as a workaround:

name: ci

on:
  push:

jobs:
  docker:
    runs-on: macos-13
    steps:
      -
        # https://github.com/crazy-max/ghaction-setup-docker/issues/108
        name: Install QEMU 9.0.2
        uses: docker/actions-toolkit/.github/actions/macos-setup-qemu@19ca9ade20f5da695f76a10988d6532058575f82
      -
        name: Set up Docker
        uses: crazy-max/ghaction-setup-docker@v3

More info: #108.

Daemon configuration

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: crazy-max/ghaction-setup-docker@v3
        with:
          daemon-config: |
            {
              "debug": true,
              "features": {
                "containerd-snapshotter": true
              }
            }

Define custom limactl start arguments (macOS)

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: crazy-max/ghaction-setup-docker@v3
        env:
          LIMA_START_ARGS: --cpus 4 --memory 8

Customizing

inputs

The following inputs can be used as step.with keys

Name Type Default Description
version String latest Docker CE version (e.g., v24.0.6).
channel String stable Docker CE channel (e.g, stable, edge or test).
daemon-config String Docker daemon JSON configuration
context String setup-docker-action Docker context name.
set-host Bool false Set DOCKER_HOST environment variable to docker socket path.

outputs

The following outputs are available

Name Type Description
sock String Docker socket path

Contributing

Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a PayPal donation to ensure this journey continues indefinitely!

Thanks again for your support, it is much appreciated! 🙏

License

Apache-2.0. See LICENSE for more details.