All Projects → w-vi → diyC

w-vi / diyC

Licence: GPL-2.0 license
A simple educational linux container runtime.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to diyC

container-staytus
adamcooke/staytus (https://staytus.co/) as a Container Image without the MySQL server.
Stars: ✭ 19 (-78.16%)
Mutual labels:  container-image
dgs19
Docker Getting Started
Stars: ✭ 22 (-74.71%)
Mutual labels:  linux-containers
squashmount
Init and management script for mounting rewritable squashfs-compressed data
Stars: ✭ 40 (-54.02%)
Mutual labels:  overlayfs
ratarmount
Random Access Read-Only Tar Mount
Stars: ✭ 217 (+149.43%)
Mutual labels:  overlayfs
Conty
Easy to use unprivileged Linux container packed into a single portable executable
Stars: ✭ 198 (+127.59%)
Mutual labels:  linux-containers
Podman Compose
a script to run docker-compose.yml using podman
Stars: ✭ 2,414 (+2674.71%)
Mutual labels:  linux-containers
crane
Crane is a easy-to-use and beautiful desktop application helps you build manage your container images.
Stars: ✭ 223 (+156.32%)
Mutual labels:  container-image
docker-advance-training-exercise
Materials for Docker Advanced training
Stars: ✭ 14 (-83.91%)
Mutual labels:  cgroups
containers-101-workshop
Docker Linux Containers 101 Workshop
Stars: ✭ 18 (-79.31%)
Mutual labels:  linux-containers
navio
Navio is a program to create and manage linux containers. This project exists only for study purposes, so feel free to contribute :)
Stars: ✭ 14 (-83.91%)
Mutual labels:  cgroups
root-ro
Read-only root filesystem for Raspbian Stretch (using overlay)
Stars: ✭ 75 (-13.79%)
Mutual labels:  overlayfs
Rattrap
The container-based cloud platform for mobile code offloading
Stars: ✭ 20 (-77.01%)
Mutual labels:  linux-containers
memavaild
Improve responsiveness during heavy swapping: keep amount of available memory
Stars: ✭ 29 (-66.67%)
Mutual labels:  cgroups
squish
An experimental, rootless, Alpine-based container runtime
Stars: ✭ 17 (-80.46%)
Mutual labels:  container-runtime
check lxc
Monitoring plugin to check LXC (Linux Container)
Stars: ✭ 13 (-85.06%)
Mutual labels:  linux-containers
kube-notary
A Kubernetes watchdog for verifying image trust with Codenotary (www.codenotary.com)
Stars: ✭ 55 (-36.78%)
Mutual labels:  container-image
Bubblewrap
Unprivileged sandboxing tool
Stars: ✭ 1,875 (+2055.17%)
Mutual labels:  linux-containers
icp-ce-on-linux-containers
Multi node IBM Cloud Private Community Edition 3.2.x w/ Kubernetes 1.13.5 in a Box. Terraform, Packer and BASH based Infrastructure as Code script sets up a multi node LXD cluster, installs ICP-CE and clis on a metal or VM Ubuntu 18.04 host.
Stars: ✭ 52 (-40.23%)
Mutual labels:  linux-containers
podman-static
static podman binaries and container image
Stars: ✭ 108 (+24.14%)
Mutual labels:  container-image
potd
A high scalable low to medium interactive SSH/TCP honeypot using Linux Namespaces, capabilities, seccomp, cgroups designed for OpenWrt and IoT devices.
Stars: ✭ 28 (-67.82%)
Mutual labels:  cgroups

diyC

A simple educational Linux container runtime.

It is intentionally simple and leaves a lot of stuff out. It is a single C file of roughly 500 lines including comments showing the core features of the Linux used to build containers. It includes also the creation of a container from an image to clarify how images and containers are related.

Documentation

http://wvi.cz/diyC/ or pure markdown in the docs directory.

Prerequisites

This is a educational piece of software and has not been tested on many systems, here are the prerequisites:

  • recent Linux kernel supporting needed namespaces and cgroups
  • overlayfs
  • ip tool (iproute2 package)
  • iptables
  • gcc
  • make
  • bash

Apart from overlayfs most of the distros are prepared and ready, if not please consult your distro package manager. Overlayfs is in the mainline kernel so it should be straightforward.

Note: Kernel needs to be configured to support following namespaces PID, mount, network and UTS, cgroups are needed as well. Most of the GNU/Linux distros have this support enabled by default.

Installation

  1. make setup

It creates the necessary directory structure as well as prepares the networking part like iptables rules, bridge (diyc0) and so on. To remove the networking bits like bridge and iptables rules run make net-clean which removes them all.

  1. make

Builds the runtime.

  1. Done

It also builds a nsexec which executes a local command in namespaces. See nsexec --help to see what namespaces are available. Usage is very simple sudo ./nsexec -pnu myhost bash will start a new bash in new pid, network and UTS namespace.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].