Skip to content

Commit a00d389

Browse files
committed
Update README
- Acknowledge changes in status of Docker/Kata compatibility (#9) - Clarify current project aims and ambitions
1 parent d7bbc92 commit a00d389

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

README.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,26 +60,28 @@ NODES=3 MTU=9000 ./test
6060

6161
[![Playing around with RunCVM, a docker runtime plugin](https://i.ytimg.com/vi/OENaWDlCWKg/maxresdefault.jpg)](https://www.youtube.com/watch?v=OENaWDlCWKg "Playing around with RunCVM, a docker runtime plugin")
6262

63-
## Why?
63+
## Motivation
6464

6565
RunCVM was born out of difficulties experienced using the Docker and Podman CLIs to launch [Kata Containers v2](https://katacontainers.io/), and a belief that launching containerised workloads in VMs using Docker needn't be so complicated.
6666

67-
(See the ongoing effort to [re-add OCI CLI commands for docker/podman](https://github.com/kata-containers/kata-containers/issues/722) to Kata v2 to support Docker & Podman; other Kata issues [#3358](https://github.com/kata-containers/kata-containers/issues/3358), [#1123](https://github.com/kata-containers/kata-containers/issues/1123), [#1133](https://github.com/kata-containers/kata-containers/issues/1133), [#3038](https://github.com/kata-containers/runtime/issues/3038); [#5321](https://github.com/kata-containers/runtime/issues/5321); [#6861](https://github.com/kata-containers/runtime/issues/6861); Podman issues [#8579](https://github.com/containers/podman/issues/8579) and [#17070](https://github.com/containers/podman/issues/17070); and Kubernetes issue [#40114](https://github.com/kubernetes/website/issues/40114)).
67+
> Motivations included: efforts to [re-add OCI CLI commands for docker/podman](https://github.com/kata-containers/kata-containers/issues/722) to Kata v2 to support Docker & Podman; other Kata issues [#3358](https://github.com/kata-containers/kata-containers/issues/3358), [#1123](https://github.com/kata-containers/kata-containers/issues/1123), [#1133](https://github.com/kata-containers/kata-containers/issues/1133), [#3038](https://github.com/kata-containers/runtime/issues/3038); [#5321](https://github.com/kata-containers/runtime/issues/5321); [#6861](https://github.com/kata-containers/runtime/issues/6861); Podman issues [#8579](https://github.com/containers/podman/issues/8579) and [#17070](https://github.com/containers/podman/issues/17070); and Kubernetes issue [#40114](https://github.com/kubernetes/website/issues/40114); though please note, since authoring RunCVM some of these issues may have been resolved.
6868
6969
Like Kata, RunCVM aims to be a secure container runtime with lightweight virtual machines that feel and perform like containers, but provide stronger workload isolation using hardware virtualisation technology.
7070

71-
However, unlike Kata, RunCVM:
71+
RunCVM features:
7272

73-
- Is compatible with `docker run` *today* (with experimental support for `podman run`).
74-
- Is written almost entirely in shell script, for simplicity, portability and ease of development.
75-
- Uses a lightweight 'wrapper-runtime' technology that subverts the behaviour of the standard container runtime `runc`, making its code footprint and external dependencies extremely small, and its internals extremely simple and easy to understand and tailor for specific purposes.
76-
- Is highly portable among Linux distributions and development platforms providing KVM. It even installs on [GitHub Codespaces](https://github.com/features/codespaces)!
73+
- Compatible with `docker run` (with experimental support for `podman run`).
74+
- Uses a lightweight 'wrapper-runtime' technology that subverts the behaviour of the standard container runtime `runc` to cause a VM to be launched within the container (making its code footprint and external dependencies extremely small, and its internals extremely simple and easy to understand and tailor for specific purposes).
75+
- Highly portable among Linux distributions and development platforms providing KVM. Can even be installed on [GitHub Codespaces](https://github.com/features/codespaces)!
76+
- Written, using off-the-shelf open-source components, almost entirely in shell script for simplicity, portability and ease of development.
7777

7878
> RunCVM makes some trade-offs in return for this simplicity. See the full list of [features and limitations](#features-and-limitations).
7979
8080
## Contents
8181

8282
- [Introduction](#introduction)
83+
- [Quick start](#quick-start)
84+
- [Motivation](#motivation)
8385
- [Licence](#licence)
8486
- [Project aims](#project-aims)
8587
- [Project ambitions](#project-ambitions)
@@ -115,12 +117,13 @@ RunCVM is free and open-source, licensed under the Apache Licence, Version 2.0.
115117
- Command-line and image-embedded options for customising the a container's VM specifications, devices, kernel
116118
- Intelligent kernel selection, according to the distribution used in the image being launched
117119
- No external dependencies, except for Docker/Podman and relevant Linux kernel modules (`kvm` and `tun`)
120+
- Support multiple Docker network interfaces attached to a created (but not yet running) container using `docker run --network=<network>` and `docker network connect` (excluding IPv6)
118121

119122
## Project ambitions
120123

121-
- Support multiple network interfaces, when attached to a created (but not yet running) container using `docker network connect` (COMPLETE - excluding IPv6)
124+
- Support for booting VM with a file-backed disk root fs generated from the container image, instead of only virtiofs root
122125
- Support running foreign-architecture VMs by using QEMU dynamic CPU emulation for the entire VM (instead of the approach used by [https://github.com/multiarch/qemu-user-static](https://github.com/multiarch/qemu-user-static) which uses dynamic CPU emulation for each individual binary)
123-
- Support for QEMU [microvm](https://qemu.readthedocs.io/en/latest/system/i386/microvm.html) or Amazon Firecracker
126+
- Support for QEMU [microvm](https://qemu.readthedocs.io/en/latest/system/i386/microvm.html) or potentially Amazon Firecracker
124127
- More natural console support with independent stdout and stderr channels for `docker run -it`
125128
- Improve VM boot time and other behaviours using custom kernel
126129
- Support for specific hardware e.g. graphics display served via VNC

0 commit comments

Comments
 (0)