{"id":21068553,"url":"https://github.com/aditya1404sal/nonhypervisor","last_synced_at":"2025-03-14T02:21:12.246Z","repository":{"id":246817443,"uuid":"822266669","full_name":"Aditya1404Sal/NonHypervisor","owner":"Aditya1404Sal","description":"A Parody of a widely known Containerisation tool","archived":false,"fork":false,"pushed_at":"2024-07-10T09:44:40.000Z","size":3438,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-20T21:38:19.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aditya1404Sal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-30T18:50:41.000Z","updated_at":"2024-07-10T09:44:44.000Z","dependencies_parsed_at":"2025-01-20T21:34:50.310Z","dependency_job_id":"bc423a3f-bf86-408b-9ce5-ca9bb1f01ea1","html_url":"https://github.com/Aditya1404Sal/NonHypervisor","commit_stats":null,"previous_names":["aditya1404sal/nonhypervisor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aditya1404Sal%2FNonHypervisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aditya1404Sal%2FNonHypervisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aditya1404Sal%2FNonHypervisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aditya1404Sal%2FNonHypervisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aditya1404Sal","download_url":"https://codeload.github.com/Aditya1404Sal/NonHypervisor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243510056,"owners_count":20302296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T18:23:09.202Z","updated_at":"2025-03-14T02:21:12.211Z","avatar_url":"https://github.com/Aditya1404Sal.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NonHypervisor : A Mock Containerization Engine\n\nThis project is a basic implementation of a mock containerization engine designed to help understand the fundamentals of containerization and how Docker works. It is intended as an educational tool and should be used with individual discretion.\n\n## Table of Contents\n- [Overview](#overview)\n- [Features](#features)\n- [Configuration](#configuration)\n- [Setup](#setup)\n- [Usage](#usage)\n- [Example](#example)\n- [Limitations](#limitations)\n- [Acknowledgements](#acknowledgements)\n\n## Overview\n\nThis project simulates the behavior of containerization by isolating processes using Linux namespaces, setting up root filesystems, environment variables, and networking. It serves as a parody of Docker and demonstrates how container environments can be created and managed.\n\n## Features\n\n- Namespace isolation (PID, UTS, mount, network)\n- Root filesystem setup using images from a container registry\n- Environment variable configuration\n- Command execution within the container\n- Networking setup with virtual Ethernet pairs and port forwarding\n\n## Configuration\n\nConfiguration for the container setup is provided via a text file (`config.txt` by default). The configuration file supports the following directives:\n\n- `FROM \u003cimage\u003e`: Specifies the base image to use for the root filesystem.\n- `ENV \u003ckey\u003e=\u003cvalue\u003e`: Sets environment variables inside the container.\n- `RUN \u003ccommand\u003e`: Runs a command during the container setup.\n- `CMD \u003ccommand\u003e`: Specifies the command to run inside the container.\n- `EXPOSE \u003cport\u003e`: Exposes a port from the container.\n\n## Setup\n\n### Prerequisites\n\n- Go (Golang) installed on your system.\n- Basic knowledge of Linux commands and networking.\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/yourusername/mock-containerization-engine.git\n   cd mock-containerization-engine\n   ```\n\n2. Install dependencies:\n   ```bash\n   go mod tidy\n   ```\n\n## Usage\n\n### Running the Mock Container Engine\n\n1. Create a configuration file (`config.txt`) with the desired container setup.\n2. Run the mock container engine:\n   ```bash\n   go run main.go config.txt\n   ```\n\n### Configuration File Format\n\nHere is an example `config.txt`:\n\n```txt\nFROM ubuntu:latest\nENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\nRUN apt-get update\nRUN apt-get install -y curl\nCMD [\"/bin/bash\"]\nEXPOSE 8080\n```\n\n## Example\n\n1. Create a configuration file named `config.txt`:\n   ```txt\n   FROM ubuntu:latest\n   ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n   RUN apt-get update\n   RUN apt-get install -y curl\n   CMD [\"/bin/bash\"]\n   EXPOSE 8080\n   ```\n\n2. Run the mock container engine:\n   ```bash\n   go run main.go config.txt\n   ```\n\n## Limitations\n\n- This project is a simplified and educational tool, not suitable for production use.\n- Lacks advanced features and robustness of real container engines like Docker.\n- Networking setup is basic and may not cover all use cases.\n- Error handling is minimal and may need improvement for real-world applications.\n\n## Acknowledgements\n\nThis project uses the following libraries:\n\n- [go-containerregistry](https://github.com/google/go-containerregistry) by Google\n- Various Go standard libraries\n\n## Disclaimer\n\nThis project is a parody and should be used with individual discretion. It is designed for educational purposes to help understand containerization concepts and is not intended for production use.\n\n---\n\nFeel free to explore, learn, and modify the code to suit your educational needs. Happy containerizing!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya1404sal%2Fnonhypervisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faditya1404sal%2Fnonhypervisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya1404sal%2Fnonhypervisor/lists"}