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

[Sandbox] container2wasm #123

Open
2 tasks done
ktock opened this issue Aug 30, 2024 · 1 comment
Open
2 tasks done

[Sandbox] container2wasm #123

ktock opened this issue Aug 30, 2024 · 1 comment
Labels
New New Application Runtime

Comments

@ktock
Copy link

ktock commented Aug 30, 2024

Application contact emails

[email protected]

Project Summary

A tool to run containers on Wasm-enabled environments.

Project Description

WebAssembly (Wasm) is expanding its adoption among tools and programming languages. But porting existing applications to Wasm is still hard. Wasm doesn't provide Linux compatibility so developers need to re-compile or re-implement existing Linux applications to run them on Wasm. This costs extra time for development.

container2wasm is a tool to solve this problem by enabling to run unmodified Linux-based containers on Wasm, leveraging CPU emulators. Applications can leverage the portability and security benefits of Wasm, without extra costs of re-compilation and re-implementation.

It has features including the following.

  • Converting a container image to a wasm blob.
  • Pulling unmodified OCI container image to the browser and running it inside the browser
  • Supports browsers and WASI runtimes as the execution environment
  • Supports networking

This project is beneficial for use cases that require an isolated execution environment and wide portability covering browsers. For example, the possible use cases will include running on-browser Linux-compatible dev environment (e.g. vscode-container-wasm), on-browser demo of applications (e.g. container2wasm demo) and isolated execution of untrusted third party software on machine.

The goal of this project is to make containers easily leverage Wasm's portability and security benefits and to make Wasm VM a more easy-to-use execution environment.

Org repo URL (provide if all repos under the org are in scope of the application)

N/A

Project repo URL in scope of application

https://github.com/ktock/container2wasm

Additional repos in scope of the application

No response

Website URL

https://github.com/ktock/container2wasm

Roadmap

https://github.com/ktock/container2wasm/blob/main/ROADMAP.md

Roadmap context

No response

Contributing Guide

https://github.com/ktock/container2wasm/blob/main/CONTRIBUTING.md

Code of Conduct (CoC)

https://github.com/ktock/container2wasm/blob/main/CODE_OF_CONDUCT.md

Adopters

No response

Contributing or Sponsoring Org

No response

Maintainers file

https://github.com/ktock/container2wasm/blob/main/MAINTAINERS

IP Policy

  • If the project is accepted, I agree the project will follow the CNCF IP Policy

Trademark and accounts

  • If the project is accepted, I agree to donate all project trademarks and accounts to the CNCF

Why CNCF?

CNCF hosts Wasm-related projects and is a large community for discussing Wasm technology. By joining CNCF, this project will be a neutral community for the discussion of the migration of applications to Wasm and encourage the integration and collaboration of containers and Wasm. This project also fills the missing piece of the ecosystem in this area.

Joining CNCF will also help this project to increase its visibility, and we expect to acquire more contributors and maintainers to this project and expand its adoption. This will help us to maintain this project in the long term.

Benefit to the Landscape

The solution for the incompatibility between the container and Wasm was a missing piece in the CNCF projects. One of the benefits of this project is that this project will fill this gap and encourage integration of containers and Wasm.

As mentioned in the project description, this project is beneficial for use cases that require isolated execution environment and wide portability covering browsers. For example, the possible use cases will include running on-browser Linux-compatible dev environments, on-browser playgrounds and isolated execution of untrusted third-party software.

Cloud Native 'Fit'

container2wasm is already listed as one of the "Wasm Orchestration & Management" tools in the landscape. https://landscape.cncf.io/?item=wasm--orchestration-management--container2wasm

container2wasm works as a runtime for containers to run in Wasm VM. So this can be classified as TAG Runtime.

Cloud Native 'Integration'

This depends on containerd of CNCF and runc of OCI for running containers. container2wasm also can be used in combination with the various tools in the CNCF community, including the following:

  • Wasm blobs converted from containers can run on Wasm runtimes including WasmEdge of CNCF.
  • container2wasm also supports fetching OCI container images to the browser, from the OCI-compliant registries including Harbor and Distribution(Container registry) of CNCF.
  • To create a smaller Wasm image, it's good to prepare a minimal container image e.g. using CNCF SlimToolkit.

Cloud Native Overlap

No

Similar projects

Landscape

Yes. https://landscape.cncf.io/?item=wasm--orchestration-management--container2wasm

Business Product or Service to Project separation

N/A

Project presentations

container2wasm hasn't been presented at any TAG meeting but it has been presented at several events including the following:

Project champions

No response

Additional information

In the community, several adopters of container2wasm can be found.

@ktock
Copy link
Author

ktock commented Nov 7, 2024

Hi, I will attend the coming WasmCon and KubeCon NA 2024 and will have a talk related to this project at WasmCon (12th Nov. 1:45pm-2:20pm MST, Distributing and Running Containers for Wasm-Enabled Environments).
If you are interested in this project, feel free to reach out to me! I'll be also online at CNCF slack (Kohei Tokunaga is me on slack).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
New New Application Runtime
Projects
Status: 📋 New
Development

No branches or pull requests

2 participants