# Docker images [![Scheduled build (Ubuntu)](https://github.com/catthehacker/docker_images/actions/workflows/build-ubuntu.yml/badge.svg?event=schedule)](https://github.com/catthehacker/docker_images/actions/workflows/build-ubuntu.yml) [![On-demand build (Ubuntu)](https://github.com/catthehacker/docker_images/actions/workflows/build-ubuntu.yml/badge.svg?event=workflow_dispatch)](https://github.com/catthehacker/docker_images/actions/workflows/build-ubuntu.yml) [![Linter](https://github.com/catthehacker/docker_images/actions/workflows/lint.yml/badge.svg)](https://github.com/catthehacker/docker_images/actions/workflows/lint.yml) ## When updates will be applied to images - A package that will be required for action(s) to work properly might be added/removed/changed - Any maintenance that will be required due to: - GitHub Container Registry - GitHub Actions - Act - Performance and/or disk space improvements ## Images available - [ChristopherHX/runner-image-blobs](https://github.com/ChristopherHX/runner-image-blobs) GitHub Actions Hosted runner image copy containing almost all possible tools (image is extremely big, 20GB compressed, ~60GB extracted) - A tar backup of the GitHub Hosted Runners are uploaded once a week via a custom docker image upload script in runner-image-blobs repository - Synced by cron job `.github/workflows/copy-full-image.yml` to the following tags - You can verify if the Image is still updated regulary by inspecting the dates in `docker buildx imagetools inspect catthehacker/ubuntu:full-latest --format "{{ json . }}"` - The friendly tag name version in the output can be looked up here https://github.com/actions/runner-images/releases to find out more about the sources - available tags are - `ghcr.io/catthehacker/ubuntu:full-latest` (aka `full-22.04`) - `ghcr.io/catthehacker/ubuntu:full-24.04` (beta image) - `ghcr.io/catthehacker/ubuntu:full-22.04` - [`/linux/ubuntu/act`](./linux/ubuntu/scripts/act.sh) - image used in [github.com/nektos/act][nektos/act] as medium size image retaining compatibility with most actions while maintaining small size - `ghcr.io/catthehacker/ubuntu:act-22.04` - `ghcr.io/catthehacker/ubuntu:act-24.04` - `ghcr.io/catthehacker/ubuntu:act-latest` - [`/linux/ubuntu/runner`](./linux/ubuntu/scripts/runner.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `runner` as user instead of `root` - `ghcr.io/catthehacker/ubuntu:runner-22.04` - `ghcr.io/catthehacker/ubuntu:runner-24.04` - `ghcr.io/catthehacker/ubuntu:runner-latest` - [`/linux/ubuntu/js`](./linux/ubuntu/scripts/js.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `js` tools installed (`yarn`, `nvm`, `node` v20/v24, `pnpm`, `grunt`, etc.) - `ghcr.io/catthehacker/ubuntu:js-22.04` - `ghcr.io/catthehacker/ubuntu:js-24.04` - `ghcr.io/catthehacker/ubuntu:js-latest` - [`/linux/ubuntu/rust`](./linux/ubuntu/scripts/rust.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `rust` tools installed (`rustfmt`, `clippy`, `cbindgen`, etc.) - `ghcr.io/catthehacker/ubuntu:rust-22.04` - `ghcr.io/catthehacker/ubuntu:rust-24.04` - `ghcr.io/catthehacker/ubuntu:rust-latest` - [`/linux/ubuntu/pwsh`](./linux/ubuntu/scripts/pwsh.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `pwsh` tools and modules installed - `ghcr.io/catthehacker/ubuntu:pwsh-22.04` - `ghcr.io/catthehacker/ubuntu:pwsh-24.04` - `ghcr.io/catthehacker/ubuntu:pwsh-latest` - [`/linux/ubuntu/go`](./linux/ubuntu/scripts/go.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `go` tools installed - `ghcr.io/catthehacker/ubuntu:go-22.04` - `ghcr.io/catthehacker/ubuntu:go-24.04` - `ghcr.io/catthehacker/ubuntu:go-latest` - [`/linux/ubuntu/dotnet`](./linux/ubuntu/scripts/dotnet.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with `.NET` tools installed - `ghcr.io/catthehacker/ubuntu:dotnet-22.04` - `ghcr.io/catthehacker/ubuntu:dotnet-24.04` - `ghcr.io/catthehacker/ubuntu:dotnet-latest` - [`/linux/ubuntu/java-tools`](./linux/ubuntu/scripts/java-tools.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with Java tools installed - `ghcr.io/catthehacker/ubuntu:java-tools-22.04` - `ghcr.io/catthehacker/ubuntu:java-tools-24.04` - `ghcr.io/catthehacker/ubuntu:java-tools-latest` - [`/linux/ubuntu/gh`](./linux/ubuntu/scripts/gh.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with GitHub CLI tools installed - `ghcr.io/catthehacker/ubuntu:gh-22.04` - `ghcr.io/catthehacker/ubuntu:gh-24.04` - `ghcr.io/catthehacker/ubuntu:gh-latest` - [`/linux/ubuntu/custom`](./linux/ubuntu/scripts/custom.sh) - `ghcr.io/catthehacker/ubuntu:act-*` but with custom tools installed - `ghcr.io/catthehacker/ubuntu:custom-22.04` - `ghcr.io/catthehacker/ubuntu:custom-24.04` - `ghcr.io/catthehacker/ubuntu:custom-latest` ## IPng Debian Runner A `debian:13-slim`-based variant of the `act`/`runner` image, intended for use with Gitea Actions. Compared to the Ubuntu images it adds `rsync`, ships `git-lfs` from Debian's archive (rather than the packagecloud repo), and uses Docker CE from `download.docker.com` instead of Microsoft's moby builds. Source: [`linux/debian/Dockerfile`](./linux/debian/Dockerfile). It is a single self-contained Dockerfile (no helper scripts) and bakes the `runner` user, Docker CE, Node.js LTS (v20 + v24), the latest stable Go release from go.dev, `yq`, and the `act`/runner environment variables (`ImageOS=debian13`, tool cache paths, etc.). Published to `git.ipng.ch/ipng/gitea-debian-runner:13-slim`. ### Build ```sh docker build --load \ --file linux/debian/Dockerfile \ --tag git.ipng.ch/ipng/gitea-debian-runner:13-slim \ --build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ --build-arg BUILD_REF="$(git rev-parse HEAD)" \ . ``` `--load` makes the image available to the local docker daemon — required when buildx uses the `docker-container` driver (the default on multi-platform setups). For multi-arch (amd64 + arm64) using buildx, building and pushing in one step: ```sh docker buildx build \ --file linux/debian/Dockerfile \ --platform linux/amd64,linux/arm64 \ --tag git.ipng.ch/ipng/gitea-debian-runner:13-slim \ --build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ --build-arg BUILD_REF="$(git rev-parse HEAD)" \ --push \ . ``` ### Push (single-arch) ```sh docker login git.ipng.ch docker push git.ipng.ch/ipng/gitea-debian-runner:13-slim ``` ## [`ubuntu-20.04` has been deprecated and images for that environment will not be updated anymore](https://github.com/actions/runner-images/pull/11748) ## [`ubuntu-18.04` has been deprecated and images for that environment will not be updated anymore](https://github.com/actions/runner-images/issues/6002) ## Repository contains parts of [`actions/virtual-environments`][actions/virtual-environments] which is licenced under ["MIT License"](https://github.com/actions/virtual-environments/blob/main/LICENSE) [nektos/act]: https://github.com/nektos/act [actions/virtual-environments]: https://github.com/actions/virtual-environments [catthehacker/virtual-environments-fork]: https://github.com/catthehacker/virtual-environments-fork/tree/master/images/linux