- snap: Fix yq error in build - storage: cleanup and support read only block dev hotplug - rootfs: Don't fallthrough in the docker_extra_args() switch - github: Add github actions - shimv2: Avoid double removing of container from sandbox - Agent: return error on trying to persist a pid namespace and minor improvements - rustjail: allow network sysctls - rustjail: fix the issue of sync read - rustjail: fix the issue of bind mount /dev - qemu: no state to save if QEMU isn't running - packaging/qemu: Build and package completely inside the container - agent: upgrade cgroups to 0.2.0 - agent: Simplify .or_else() to .or() - Fix error reporting in listInterfaces() and listRoutes() - improve rustjail validator - Add void "install" targets for both "trace-forwarder" and "agent-ctl" - [forwardport] Add support for Gentoo - oci: fix a typo in "addtionalGids" - Don't update cpusets if no CPUs changed closes #1172 - rootfs: reduce size of debian image - runtime: Allow to overwrite DESTDIR - snap: fix snap release channel - Don't leak fd when reseeding rng - Fixes for make generate-protocols - docs: Fix docs in docs/architecture.md - docs: Update the Cloud Hypervisor description in virtualization.md - agent: exit from exec hangs if background process is present - [forwardport] install: Improve snap documentation - handle vcpus properly utilized in the guest - docs: fix the custom agent binary file path for creating initrd image - shimv2: handle ctx passed by containerd - runtime: clh: Enforce to call 'cleanupVM' for 'stopSandbox' - agent: Adjust OOM Score to avoid agent being killed. - [forward port] cli: make check subcommand more tolerant to failures - docs: add link to VMT on top level README - rustjail: fork a new child process to change the pid ns - rustjail: remove the network ns validation against container - snap: update apps section - runtime: don't wait the second shim process in shim start - agent: create pci root Bus Path for arm64 - agent: enable lto flag for Cargo to get better optimized code - virtcontainers: revert CleanupContainer from PR 1079 - docs: Create hypervisor summary document - Add hyperlink and fix typo - versions: Use CRI-O v1.18.4-4-g6dee3891e - runtime: change configuration key name from EnablePprof to enable_pprof - runtime: delete sandboxlist.go and sandboxlist_test.go - versions: Use release-1.18 (commit ee9128444bec10) - runtime: clh: disable virtiofs DAX when FS cache size is 0 - release: Fix release candidate to major version upgrade check - runtime: sleep 1 second after GetOOMEvent failed - Agent: README updates for build on ppc64le - runtime: clean/refactor code - Forward port annotation doc - versions: Update cloud-hypervisor to release v0.11.0 - docs: Add instructions for enabling VM templating - Revert "version: revert back to crio 1.8.3" - Dump guest memory when kernel panic for QEMU - clh: Consolidate the code path for device unplug - agent: Log ttrpc messages - annotations: Improve asset annotation handling - runtime: readonly volume should be bind mounted readonly on the host - docs: Fix incorrect docs in config file - CI: Fix incorrect URL - docs: Update top-level README - versions: Update crio version - runtime: cloud-hypervisor: reduce memory footprint - agent: Improve unit test coverage for src/sandbox.rs - rustjail: fix the issue of create thread failed causing current thread panic - Improve unit test coverage for rustjail/container.rs - agent: Update build instructions - cli: Provide aliases for kata-* subcommands and options - runtime: Restore QEMUVIRTIOFSPATH variable in Makefile - Use apply_patches.sh in qemu and kernel scripts - clean up agent proto files - agent: fixes the permissions of PID 1's STDIO - Feature/1004 add version for kata monitor - agent: Generate proto files programmatically - runtime: Fix firecracker config - docs: remove the 1.x version description about shim and proxy - arm64: correct bridge type for QEMUVIRT - snap: add GH actions jobs to release the snap package - agent: clear clippy warnings - agent: simplify ttrpc error construction - Replace @RUNTIME_NAME@ with the target in generated files - 2.0 update doc for hypervisor related information - virtcontainers: Append max_ports to virtio-serial device - snap: install libseccomp-dev - runtime: set virtio-fs as default fs sharing method - VirtioFS: backports & default settings to improve performance - tools: Make agent-ctl support more APIs - Validate runtime annotations - kernel: update to 5.4.71 - config: make virtio-fs part of standard kernel - agent: Optimize error handling - versions: Update Kubernetes, containerd, cri-o and cri-tools - agent: fix crashers if API requests empty - rustjail: add length check for uid_mappings in rootless euid mapping - kata-monitor: use regexp to check if runtime is kata containers - docs: update the build kata containers kernel document - cgroup and cpuset fixes from 1.x - docs: Update upgrading guide - agent: fix panic on malformed device resource in container update - Forward port device conflict fixes from Kata 1 / Go agent - docs: Add containerd install guide - agent: simplify codes - agent: fix errorneous parsing for guest block size - agent: use macro to simplify parse_cmdline function in config.rs - fix arm CI - packaging: fix missing cloud_hypervisor_repo - docs: Add crictl example json files - ci: snap: add event filtering - agent: do not follow link when mounting container proc and sysfs - agent-ctl: include cargo lock updates - agent: set init process non-dumpable - runtime: Clear the VCMock 1.x API Methods from 2.0 - virtiofs: Disable DAX - docs: Update docs for enabling agent debug console - Remove compilation warnings - osbuilder: Create target directory for agent - versions: add plugins section - snap: specify python version - packaging: fix image build script - Main packaging fixups - clh: Support VFIO device unplug - ci: add github action to test the snap - docs: update networking description - docs: update dev guide for agent build - rust-agent: Update README - docs: update architecture.md - runtime: add support for SGX - version: upgrade qemu version to v5.1.0 for arm64 - agent: Fix OCI Windows network shared container name typo - github: Remove issue template and use central one - docs: fix broken links - Packaging: release notes script using error kernel path urls - rust-agent: Replaces improper use of match for non-constant patterns - devices: fix go test warning in manager_test.go - action: Allow long lines if non-alphabetic - Indicates never return function and remove unreachable code - agent: propagate the internal detail errors to users - Update Installation Guide to better reflect the current state of the project - ci: fix clone_tests_repo function - agent: Set LIBC=gnu for ppc64le arch by default - fc: integrate Firecracker's metrics - Fix to qemu experimental and improvements - ci: resurrect travis static checkers - agent: fix UT failures due to chdir - agent: Only allow proc mount if it is procfs - kata 2.0: add debug console service - runtime: Call s.newStore.Destroy if globalSandboxList.addSandbox - shimv2: add a comment in checkAndMount() - osbuilder: specify default toolchain verion in rust-init - runtime: Update CLH client pkg to version v0.10.0 - agent/oci: Don't use deprecated Error::description() method - runtime: Fix linter errors in release files - packaging: Build from source if the clh release binary is missing - runtime: add podman configuration to data collection script - ci: use Travis cache to reduce build time - agent: update cgroups crate - docs: Update the reference path of kata-deploy in the packaging - runtime: make kata-check check for newer release - how-to: add privileged_without_host_devices to containerd guide - agent: Unit tests for rustjail/mount.rs - docs: Fix the kata-pkgsync tool's docs script path - Fix developer guide - fix guest panic when running agent as init - packaging: update version file url for kata 2.0 in Makefile - Fix release notes |
||
---|---|---|
.github/workflows | ||
ci | ||
docs | ||
pkg/logging | ||
snap | ||
src | ||
tools | ||
utils | ||
.gitignore | ||
CODE_OF_CONDUCT.md | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
LICENSE | ||
Makefile | ||
README.md | ||
utils.mk | ||
VERSION | ||
versions.yaml |

Kata Containers
Welcome to Kata Containers!
This repository is the home of the Kata Containers code for the 2.0 and newer releases.
If you want to learn about Kata Containers, visit the main Kata Containers website.
For further details on the older (first generation) Kata Containers 1.x versions, see the Kata Containers 1.x components section.
Introduction
Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs.
Getting started
See the installation documentation.
Documentation
See the official documentation (including installation guides, the developer guide, design documents and more).
Community
To learn more about the project, its community and governance, see the community repository. This is the first place to go if you wish to contribute to the project.
Getting help
See the community section for ways to contact us.
Raising issues
Please raise an issue in this repository.
Note: If you are reporting a security issue, please follow the vulnerability reporting process
Kata Containers 1.x versions
For older Kata Containers 1.x releases, please raise an issue in the Kata Containers 1.x component repository that seems most appropriate.
If in doubt, raise an issue in the Kata Containers 1.x runtime repository.
Developers
Components
Component | Type | Description |
---|---|---|
agent-ctl | utility | Tool that provides low-level access for testing the agent. |
agent | core | Management process running inside the virtual machine / POD that sets up the container environment. |
documentation | documentation | Documentation common to all components (such as design and install documentation). |
osbuilder | infrastructure | Tool to create "mini O/S" rootfs and initrd images for the hypervisor. |
packaging | infrastructure | Scripts and metadata for producing packaged binaries (components, hypervisors, kernel and rootfs). |
runtime | core | Main component run by a container manager and providing a containerd shimv2 runtime implementation. |
trace-forwarder | utility | Agent tracing helper. |
Kata Containers 1.x components
For the first generation of Kata Containers (1.x versions), each component was kept in a separate repository.
For information on the Kata Containers 1.x releases, see the Kata Containers 1.x releases page.
For further information on particular Kata Containers 1.x components, see the individual component repositories:
Component | Type | Description |
---|---|---|
agent | core | See components. |
documentation | documentation | |
KSM throttler | optional core | Daemon that monitors containers and deduplicates memory to maximize container density on the host. |
osbuilder | infrastructure | See components. |
packaging | infrastructure | See components. |
proxy | core | Multiplexes communications between the shims, agent and runtime. |
runtime | core | See components. |
shim | core | Handles standard I/O and signals on behalf of the container process. |
Note:
- There are more components for the original Kata Containers 1.x implementation.
- The current implementation simplifies the design significantly: compare the current and previous generation designs.
Common repositories
The following repositories are used by both the current and first generation Kata Containers implementations:
Component | Description | Current | First generation | Notes |
---|---|---|---|---|
CI | Continuous Integration configuration files and scripts. | Kata 2.x | Kata 1.x | |
kernel | The Linux kernel used by the hypervisor to boot the guest image. | Kata 2.x | Kata 1.x | Patches are stored in the packaging component. |
tests | Test code. | Kata 2.x | Kata 1.x | Excludes unit tests which live with the main code. |
www.katacontainers.io | Contains the source for the main web site. | Kata 2.x | Kata 1.x |
Packaging and releases
Kata Containers is now available natively for most distributions. However, packaging scripts and metadata are still used to generate snap and GitHub releases. See the components section for further details.