{"id":27940657,"url":"https://github.com/vgnshiyer/container-net","last_synced_at":"2026-05-06T10:38:43.528Z","repository":{"id":229549636,"uuid":"777021189","full_name":"vgnshiyer/Container-Net","owner":"vgnshiyer","description":"A network of Linux containers on a single command.","archived":false,"fork":false,"pushed_at":"2024-04-05T18:57:45.000Z","size":1405,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T20:26:29.603Z","etag":null,"topics":["ansible","containers","devops","docker","docker-compose"],"latest_commit_sha":null,"homepage":"https://blog.vgnshiyer.dev/posts/04-05-2024_container_net","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vgnshiyer.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,"zenodo":null}},"created_at":"2024-03-25T03:08:04.000Z","updated_at":"2024-10-22T02:56:49.000Z","dependencies_parsed_at":"2024-03-25T04:32:57.719Z","dependency_job_id":"8fdd33a8-e3ef-40bc-9cde-3ec1ddee7bd8","html_url":"https://github.com/vgnshiyer/Container-Net","commit_stats":null,"previous_names":["vgnshiyer/container-net"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vgnshiyer/Container-Net","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgnshiyer%2FContainer-Net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgnshiyer%2FContainer-Net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgnshiyer%2FContainer-Net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgnshiyer%2FContainer-Net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vgnshiyer","download_url":"https://codeload.github.com/vgnshiyer/Container-Net/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vgnshiyer%2FContainer-Net/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32689527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ansible","containers","devops","docker","docker-compose"],"created_at":"2025-05-07T10:19:30.414Z","updated_at":"2026-05-06T10:38:43.498Z","avatar_url":"https://github.com/vgnshiyer.png","language":"Dockerfile","funding_links":["https://www.buymeacoffee.com/vgnshiyer"],"categories":[],"sub_categories":[],"readme":"\u003c!--\u003cimg width=\"501\" alt=\"Screenshot 2024-04-05 at 10 53 21 AM\" src=\"https://github.com/vgnshiyer/Container-Net/assets/39982819/d4f99c16-d6b7-4835-a7d9-c4d0f1706aed\"\u003e--\u003e\n# Container-Net\n\nA lightweight container based network using docker. (Practice Linux Administration without blowing off your AWS bills)\n\n\u003cimg width=\"266\" alt=\"Screenshot 2024-04-05 at 11 46 22 AM\" src=\"https://github.com/vgnshiyer/Container-Net/assets/39982819/6ff40de3-f5c4-424d-9b7e-5c472fcaddec\"\u003e\n\n\u003c!-- Badges --\u003e\n[![](https://badgen.net/github/license/vgnshiyer/Container-Net)](https://github.com/vgnshiyer/Container-Net/blob/master/LICENSE)\n[![](https://img.shields.io/badge/Follow-vgnshiyer-0A66C2?logo=linkedin)](https://www.linkedin.com/comm/mynetwork/discovery-see-all?usecase=PEOPLE_FOLLOWS\u0026followMember=vgnshiyer)\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Donate-yellow.svg?logo=buymeacoffee)](https://www.buymeacoffee.com/vgnshiyer)\n\n## Description\n\nContainer-Net is a fully functional minimalistic network of servers on your local machine using Docker. \n\n### Features\n\n- Offers a minimalistic, container-based approach to simulate a network of servers on your local machine, avoiding the overhead associated with virtual machines or cloud services.\n- Enables practice with Linux administration, networking commands, and DevOps tools without incurring costs associated with cloud services like AWS.\n\n## Getting Started\n\n**Prerequisites**\n    \n- Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) client.\n\n**Installation \u0026 Setup**\n\n- Fork this [repository](https://github.com/vgnshiyer/Container-Net).\n- Clone this repository. `git clone https://github.com/YOUR-GITHUB-USERNAME/Container-Net`\n- Open the directory on vscode.\n- Start Container-Net. `cd Container-Net \u0026\u0026 docker-compose build`\n- Open your web browser [localhost:7681](localhost:7681) to access server 1.\n- Login using the guest user. (guest1:guest1)\n\nWeb Termminal is accesible via port-forwarding for each server, configured by the \\\u003cSERVERNAME\\\u003e_TTYD_PORT arg in the `.env` file.\n\n## How to's?\n\n**How to add users to the servers?**\n\nEdit the USERS arg in the `.env` file. Add them separated by comma as below.\n```\n# .env\nUSERS=username1:password1,username2:password2\n```\n\n**Note:** You can choose to bind the home directory of the user to a directory on your local machine using `docker volumes`. For eg.,\n```\n# docker-compose.yml\nvolumes:\n  - ./data/ubuntu1/home/guest1:/home/guest1\n```\n\n**Note:** By default, the added users will have sudo access. To remove sudo access, comment `line no. 11` in `/image-templates/scripts/create_users.sh` file.\n```\n# scripts/create_users.sh\n# echo \"${USER[0]} ALL=(ALL:ALL) ALL\" \u003e\u003e /etc/sudoers \u003c-- this line\n```\n\n**How to add default packaged to the image.**\n\nEdit the \u003cOS\u003e_PACKAGE arg in the `.env` file. Add packages supported by the default package manager for the OS. For eg.,\n```\n# .env\nUBUNTU_PACKAGES=vim,openssl,git\n```\n\nThe above args will be passed as build arguments for the image template, which will be used internally as environment variables.\n\n**How to add servers to the network?**\n\n- Choose an image template from `/image-templates` directory.\n- Specify the name of the image in the \\\u003cSERVERNAME\\\u003e_DOCKERFILE arg in the `.env` file.\n- Optionally add the above args for users to add and packages to install.\n- Specify the port forwardings in the `.env` file and `docker-compose.yml` file.\nFor eg., \n```\n# docker-compose.yml\n\u003cservername\u003e:\n    \u003chostname: servername\u003e\n    \u003ccontainer_name: servername\u003e\n    build:\n      context: \"./image-templates\" # image path\n      dockerfile: ${SERVERNAME_DOCKERFILE} # image dockerfile name\n      args:\n        - USERS=${USERS} # users to add\n        - PACKAGES=${SERVERNAME_PACKAGES} # packages to install\n    image: \u003cservername\u003e\n    privileged: true\n    volumes: # bind user home directories to local directories\n      - ./data/\u003cservername\u003e/home/guest1:/home/guest1\n      - ./data/\u003cservername\u003e/home/guest2:/home/guest2\n      - ./data/\u003cservername\u003e/root:/root\n    ports:\n      - ${SERVERNAME_PORT_SSHD}:22 # ssh\n      - ${SERVERNAME_PORT_TTYD}:7681 # web terminal\n    networks:\n      - container_net\n```\n\n## Contributing\n\nThank you for considering contributing to this project! Your help is greatly appreciated.\n\nTo contribute to this project, please follow these guidelines:\n\n### Opening Issues\nIf you encounter a bug, have a feature request, or want to discuss something related to the project, please open an issue on the GitHub repository. When opening an issue, please provide:\n\n**Bug Reports**: Describe the issue in detail. Include steps to reproduce the bug if possible, along with any error messages or screenshots.\n\n**Feature Requests**: Clearly explain the new feature you'd like to see added to the project. Provide context on why this feature would be beneficial.\n\n**General Discussions**: Feel free to start discussions on broader topics related to the project.\n\n### Steps\n\n1️⃣ Fork the GitHub repository https://github.com/vgnshiyer/Container-Net \\\n2️⃣ Create a new branch for your changes (git checkout -b feature/my-new-feature). \\\n3️⃣ Make your changes and test them thoroughly. \\\n4️⃣ Push your changes and open a Pull Request to `main`.\n\n*Please provide a clear title and description of your changes.*\n\n## Bonus\n\nHere is a detailed tutorial on how to setup ansible on Container-Net on my [website](https://vgnshiyer.dev/posts/04-05-2024_container_net).\n\n## Version History\n\n* 0.1\n    * Initial Release.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/vgnshiyer/Container-Net/blob/main/LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvgnshiyer%2Fcontainer-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvgnshiyer%2Fcontainer-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvgnshiyer%2Fcontainer-net/lists"}