Dive into System Administration with Docker! This Project guides you through creating Virtualized Environments using Docker within a Personal VM, expanding your knowledge and Practical Skills.
Get hands-on with Containerization, building Custom Images, and managing Applications efficiently.
Docker is not a Virtual Machine. It is a mechanism to Containerize Applications and Isolate the Processes running these applications. Docker uses a feature in the Kernel called NAMESPACES.
A Linux namespace is a feature that the Linux kernel provides to isolate resources for a set of processes. This offers two main advantages:
- Isolation of resources: One troublesome process won’t affect the entire host but only those processes within the same namespace.
- Security: A security flaw in a process running under a specific namespace won’t give the attacker access to the whole system.
- User namespace: Contains an independent set of user IDs and group IDs.
- PID namespace: Contains its own set of process IDs (PIDs). Each new namespace starts with PID 1.
- Mount namespace: Manages mount points independently.
- Network namespace: Virtualizes the network stack, including interfaces, IPs, route tables, and sockets.
- IPC (Inter-Process Communication) namespace: Defines shared memory segments for processes within a namespace.
- UTS (Unix Time-Sharing) namespace: Allows different host names and domain names for each namespace.
- Time namespace: Allows different system times within the system (introduced in 2020).
- CGroup (Control Groups) namespace: Limits resource usage (CPU, memory, disk, etc.) for a group of processes (introduced in 2016).
- Virtual machines isolate hardware, while Docker isolates processes.
The project involves creating three containers, each based on a minimal OS image and configured manually:
This project is licensed under the MIT License.