Skip to content

[Feature] Use Containerd and NerdCtl instead of Docker #579

@astromasoud

Description

@astromasoud

Feature Description

Currently the installer's "Pre-Requisites" section requires Docker or Podman as the container platform:

✘ Docker/Podman installed
✘ Docker Compose v2 installed
✘ User added to the docker group
✘ Docker daemon is running
  • The underlying container runtime in both platforms is Containerd
  • There are alternative tools like Nerdctl made by Containerd to use instead of installing those!
  • Nerdctl already supports all the Docker CLI commands (including docker compose) and can completely replace Docker.

Use-Case

By implementing this feature, WinBoat will become platform-agnostic instead of relying on Docker/Podman, and would cover a wider variety of use-cases and user-bases like:

  • People who don't want to install Docker on their systems.
  • Those using Containerd engine directly with the help of Nerdctl to run and manage containers, build Docker images, work with docker-compose files, etc.

Proposed Implementation

As Nerdctl already supports all Docker CLI commands, IMO this feature could simply be added by either of the following methods:

  • Adding Nerdctl as a 3rd option in the drop-down menu beside Docker and Podman:
    -- Check the output of nerdctl info, if it works then it's configured right and Containerd service is running.
    -- Additionally check nerdctl run && nerdctl build (just like docker equivalents) to see if the CNI plugins and BuildKit are also installed.

  • Providing a way to bypass the "Pre-Requisites" Docker part through either:
    -- An "Other/Misc/Containerd" option in the drop-down menu for "more advanced users", where further errors in the process is on the users to debug on their own!
    -- Support setting an alias or a symlink for the docker command pointing to nerdctl binary.

On my own system (Fedora Workstation 43 x64) I've set a global bash/zsh alias for docker command which points to nerdctl.
This can be achieved by adding the following line to the end of bashrc or zshrc file under your home directory (or in /etc/ for global use):
alias docker="nerdctl" (or "sudo nerdctl" if you haven't enabled the rootless mode like me).

This way I can use completely identical Docker commands like docker compose up -d, so no need to rewrite old automation scripts!

But with an alias the WinBoat installer still thinks that Docker is not installed, so I created a symlink for docker using:
sudo ln -s /usr/local/bin/nerdctl /usr/local/bin/docker
Which sort of worked, the WinBoat installer now thinks that Docker is installed but still the Docker Compose, Group, and Daemon parts are not green!

✔ Docker/Podman installed
✘ Docker Compose v2 installed
✘ User added to the docker group
✘ Docker daemon is running

Notice

  • I have checked the issue tracker and verified that this Feature Request has not been proposed before.
  • I would like to help out implementing this feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions