Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Container engine interop #11

Open
Chuxel opened this issue Feb 14, 2022 · 2 comments
Open

Container engine interop #11

Chuxel opened this issue Feb 14, 2022 · 2 comments
Labels
proposal Still under discussion, collecting feedback

Comments

@Chuxel
Copy link
Member

Chuxel commented Feb 14, 2022

The Docker CLI is as close to a standard as exist in interoperating with container engines. This is why engines like Podman mirror the command line interface. The reference implementation of the dev container spec (#9) and things built up from it should generally support anything that mimics the Docker CLI since it intentionally does not directly talk to the engine's daemon as an abstraction. However, there have been subtle differences that have come up particularly around the areas of file mounting and permissions. Similar to #10, there's also been interest from communities using engines and CLIs like Singularity, nerdctl, crictl, and even straight kubectl.

Today, the runArgs property is used heavily, and needs some abstraction for common properties (see #2). Any orchestrator support (see #10) would help in the case of more complex multi-container configurations. However, these do not resolve the simpler single container case where no orchestrator format is in-play.

To make it clear for how container engine communities could contribute support to the reference implementation or adopt the dev container spec in another form, I'd propose we:

  1. Implement Port features.json properties for most common runtime arguments #2 and document how to add support for alternate engines in the reference implementation (Publish reference implementation #9)
  2. Move runArgs to be an engine under a property much like orchestrators in Orchestrator interop #10 or customizations in Move settings and extensions properties to vscode namespace #1 (e.g. "docker" {"runArgs":""} or "docker.runArgs": ""), with details on how to add other engine specific properties.
@Chuxel Chuxel added the proposal Still under discussion, collecting feedback label Feb 14, 2022
@oschulz
Copy link

oschulz commented Feb 17, 2022

Direct support for non-Docker container runtimes would be awesome! We currently use a workaround for Singularity and Shifter - it works quite well, but it's fiddly and but it's not trivial for less experienced users to set up.

@zephyros-dev
Copy link

zephyros-dev commented May 18, 2024

I'm currently using Podman, but I'd like to have the devcontainers configuration to work also for people who use Docker. Podman requires settings some specific runtime arguments as specified in here, however those settings won't work with Docker. This suggestion:

Move runArgs to be an engine under a property much like orchestrators in #10 or customizations in #1 (e.g. "docker" {"runArgs":""} or "docker.runArgs": ""), with details on how to add other engine specific properties.

should allows settings podman-specific properties if needed, however I believed this is not implemented yet as I cannot find it in the specification. Would love to have this feature supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
proposal Still under discussion, collecting feedback
Projects
None yet
Development

No branches or pull requests

3 participants