← Back to Projects

Ready, Get Set, Containers!

CDockerContainersNamespacesCgroupsSystems Programming
July 2024GitHub ↗

Overview

Designed custom container environments in C, leveraging filesystem isolation, PID namespaces, and cgroup-based resource provisioning to enable controlled execution of multiple processes in isolated environments.

Key Features

  • Filesystem Isolation: Chroot and mount namespaces for process isolation
  • PID Namespaces: Separate process trees for each container
  • Cgroup Resource Provisioning: CPU, memory, and I/O resource limiting
  • Container Networking: TCP port forwarding and peer communication between containers
  • Container Management: Automated container creation, execution, and lifecycle management

Technologies

  • C for systems-level container implementation
  • Linux namespaces (mount, pid, network)
  • Cgroups for resource control
  • Socket programming for container networking

Implementation Tasks

  • Task 1-4: Progressive implementation of container features
  • Filesystem isolation and namespace creation
  • Process management and signal handling
  • Resource provisioning and cgroup configuration
  • Networking and inter-container communication

Learning Outcomes

  • Deep understanding of Linux containerization
  • Namespace and cgroup internals
  • Systems-level programming in C
  • Container orchestration concepts
  • Network namespace management