You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-9Lines changed: 12 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,26 +60,28 @@ NODES=3 MTU=9000 ./test
60
60
61
61
[](https://www.youtube.com/watch?v=OENaWDlCWKg"Playing around with RunCVM, a docker runtime plugin")
62
62
63
-
## Why?
63
+
## Motivation
64
64
65
65
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.
66
66
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.
68
68
69
69
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.
70
70
71
-
However, unlike Kata, RunCVM:
71
+
RunCVM features:
72
72
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.
77
77
78
78
> RunCVM makes some trade-offs in return for this simplicity. See the full list of [features and limitations](#features-and-limitations).
79
79
80
80
## Contents
81
81
82
82
-[Introduction](#introduction)
83
+
-[Quick start](#quick-start)
84
+
-[Motivation](#motivation)
83
85
-[Licence](#licence)
84
86
-[Project aims](#project-aims)
85
87
-[Project ambitions](#project-ambitions)
@@ -115,12 +117,13 @@ RunCVM is free and open-source, licensed under the Apache Licence, Version 2.0.
115
117
- Command-line and image-embedded options for customising the a container's VM specifications, devices, kernel
116
118
- Intelligent kernel selection, according to the distribution used in the image being launched
117
119
- 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)
118
121
119
122
## Project ambitions
120
123
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
122
125
- 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
124
127
- More natural console support with independent stdout and stderr channels for `docker run -it`
125
128
- Improve VM boot time and other behaviours using custom kernel
126
129
- Support for specific hardware e.g. graphics display served via VNC
0 commit comments