Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/slonopotamus/stevedore

🚢 Docker distribution for Windows Containers that Just Works
https://github.com/slonopotamus/stevedore

containers docker windows

Last synced: 5 days ago
JSON representation

🚢 Docker distribution for Windows Containers that Just Works

Awesome Lists containing this project

README

        

= Stevedore
Marat Radchenko
:slug: slonopotamus/stevedore
:uri-project: https://github.com/{slug}
:uri-ci: {uri-project}/actions?query=branch%3Amain

image:{uri-project}/workflows/CI/badge.svg?branch=main[Build Status,link={uri-ci}]
image:https://img.shields.io/github/release/{slug}.svg[Download,link={uri-project}/releases/latest]
image:https://img.shields.io/chocolatey/v/stevedore[Chocolatey package,link=https://community.chocolatey.org/packages/stevedore]
image:https://img.shields.io/winget/v/Slonopotamus.Stevedore[WinGet package,link=https://winstall.app/apps/Slonopotamus.Stevedore]

== Overview

This project aims to provide a frictionless Docker experience for Windows Containers.

Stevedore can be used as a replacement for Docker Desktop, `DockerMsftProvider` or Mirantis Container Runtime.

*Only Windows Containers are supported.*

== Bundled components

* https://github.com/moby/moby[Docker Engine]
* https://github.com/docker/compose[Docker Compose]
* https://github.com/docker/buildx[Docker Buildx]
* https://github.com/docker/docker-credential-helpers[docker-credential-wincred]
* https://github.com/containerd/containerd[containerd]
* https://github.com/containerd/nerdctl[nerdctl]
* https://github.com/microsoft/windows-container-networking[CNI plugins]

== Supported OSes

* Windows 10 starting with version 1809 (build 17763)
* Windows 11
* Windows Server 2019, 2022

== Installation

=== Manual

. Download {uri-project}/releases/latest[MSI installer]
. Double-click on it
. Next-next-next
. Reboot your computer.
This is needed to finish installation of Windows Containers feature and to add your user to `docker-users` group so user can access Docker service.

=== Chocolatey

Stevedore is available via https://community.chocolatey.org/packages/stevedore[Chocolatey] package manager.
If you already have Chocolatey installed, you can just run the following command from elevated console:

[source,powershell]
----
choco install stevedore
----

Then reboot.

=== WinGet

[source,powershell]
----
winget install stevedore
----

Then reboot.

=== Advanced: Command-line install options

Stevedore installer supports several command-line options that may be handy to configure unattended installations.

Basic usage: `msiexec /i c:\path\to\stevedore.msi`.

For quiet (non-interactive) installation add `/quiet` option.

If you only want to install specific Stevedore features, use `ADDLOCAL=Feature1,Feature2,Feature3` syntax.

.List of available MSI features for `ADDLOCAL`
* `FeatureDockerd` installs Docker service.
* `FeatureContainerd` installs containerd service.
* `FeatureBuildkitd` installs BuildKit service.
* `FeatureHyperV` installs Hyper-V support.
It allows running containers with https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container#hyper-v-isolation[Hyper-V isolation].
* `FeatureWincred` installs docker-credential-wincred.

You can also pass custom installation properties to Stevedore installer using `PROPERTY=value` syntax.

.List of available MSI properties
* `INSTALLDIR=%ProgramFiles%\Stevedore` specifies directory where Stevedore executable files will be installed
* `SERVICENAME=stevedore` specifies Windows service name

When installing Stevedore via Chocolatey, use this syntax: `choco install stevedore --install-arguments="ADDLOCAL=Feature1,Feature2,Feature3 PROPERTY=value /quiet"`

== Usage

After installation and reboot, `docker` command should be available on PATH and ready to use.

You may try `docker run --rm hello-world` from a command line to confirm that everything was set up properly.

In order to communicate with Docker engine, users needs to be in `docker-users` group.
Upon installation, Stevedore automatically adds installing user to `docker-users`.
If you need other users to also access Docker engine, you will need to add them manually.
You can use https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.localaccounts/add-localgroupmember[Add-LocalGroupMember] PowerShell commandlet for that.

=== Docker Compose

Stevedore installs two flavors of Docker Compose.

You can use Docker Compose V2 via `docker compose` command.

You can also use Docker Compose V1 compatibility mode via `docker-compose` command.

=== Configuration and data files

Stevedore stores configuration and runtime data files for Windows containers under `%ProgramData%\Docker` directory.

[[containerd]]
=== containerd, buildkitd and nerdctl

Stedevore has *experimental* support for Dockerless container environment.

To try it, enable *containerd* and *BuildKit* features in Stevedore installer.

After installation (and reboot), you should be able to run containers using nerdctl:

[source,shell]
----
nerdctl run --rm -it hello-world
----
NOTE: If you're getting `open \\\\.\\pipe\\containerd-containerd: Access is denied."` error, you need to run commands with elevated permissions.
When https://github.com/containerd/containerd/issues/10454[this feature] is implemented, you will be able to use `nerdctr` from any user in `docker-users` group.

You can use `nerdctl build` to build containers.

NOTE: There's an https://github.com/containerd/containerd/issues/10154[issue] with `nerdctl build`.
If you get `error: code = Unknown desc = write /dev/stdout: The pipe is being closed.`, add `--progress=plain` option.

Additionally, `ctr` and `buildctl` are available on `%PATH%`.

== Building from source

. https://www.rust-lang.org/tools/install[Install Rust]
. Install https://wixtoolset.org/releases/https://wixtoolset.org/releases/[WiX Toolset] either manually or by running `choco install wixtoolset` if you have https://chocolatey.org/[Chocolatey]
. Install Visual Studio 2019 or 2022.
Enable "Desktop development with {cpp}" workload.
. Clone Stevedore Git repository
. Run `cargo install cargo-wix` to install https://github.com/volks73/cargo-wix[cargo-wix]
. Run `cargo wix --nocapture` in repository root.
Ready-to-use MSI package will be built in `/target/wix` directory.

[[no-more-linux-containers]]
== Where Linux containers support is gone?

Back in summer 2021, when this project was started, there were no known alternatives to Docker Desktop.
Container Desktop didn't exist yet, and Rancher Desktop just released initial 0.1.0 release.

Today, things are very different.
Rancher Desktop provides both Docker and Kubernetes support, with a very advanced UI.
Stevedore is very unlikely to even come closer to Rancher Desktop functionality due to limited developer resources and lack of motivation.

Thus, starting with 0.10.0 release, Stevedore focuses on its primary goal - providing a convenient way to install Docker for Windows containers.

If you want to run Linux containers, consider one of these projects:

* https://rancherdesktop.io/[Rancher Desktop] (Windows + Linux + Mac)
* https://container-desktop.io/[Container Desktop] (Windows-only)
* https://github.com/abiosoft/colima[Colima] (Mac-only)