https://github.com/tysker/linux_training_environment_playground
This repository provides a self-contained Linux training environment designed for teaching Linux commands using Docker. It is intended for use with GitHub Classroom, where each student receives a private copy of the repository and completes the exercises inside their own isolated Linux container.
https://github.com/tysker/linux_training_environment_playground
docker github github-actions github-classroom linux
Last synced: 2 months ago
JSON representation
This repository provides a self-contained Linux training environment designed for teaching Linux commands using Docker. It is intended for use with GitHub Classroom, where each student receives a private copy of the repository and completes the exercises inside their own isolated Linux container.
- Host: GitHub
- URL: https://github.com/tysker/linux_training_environment_playground
- Owner: tysker
- Created: 2025-11-20T07:26:56.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-11-20T09:00:52.000Z (7 months ago)
- Last Synced: 2025-11-20T09:11:35.880Z (7 months ago)
- Topics: docker, github, github-actions, github-classroom, linux
- Language: Dockerfile
- Homepage:
- Size: 440 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π§ Linux Training Environment β Docker Playground
_A GitHub Classroomβready Linux learning environment_




---
## π Overview
This repository provides a **self-contained Linux training environment** designed for teaching Linux commands using Docker.
It is intended for use with **GitHub Classroom**, where each student receives a private copy of the repository and completes the exercises inside their own isolated Linux container.
Students on **Windows**, **macOS**, or **Linux** can all run the exact same environment.
All exercises and student tasks are located in **INSTRUCTIONS.md**.
---
## π How Instructors Use This Repository
This repository is configured as a **template** for GitHub Classroom.
1. Create a new Classroom assignment.
2. Select this repository as the **template repo**.
3. Distribute the assignment link to students.
4. Classroom automatically generates a private repo for each student.
5. Students complete tasks inside the Docker environment and push their work.
6. Instructors review submissions or use optional autograding.
---
## π§ͺ Autograding (Optional)
This repository includes basic autograding support through:
```
.github/classroom/autograding.json
tests/
```
By default, the autograder checks:
- Whether the student created `username.txt`
- Whether the file contains output
- Assigns points based on test success
Additional tests can be added in the `tests/` directory and configured via `autograding.json`.
---
## π Student Quickstart (Short Version)
Students follow **INSTRUCTIONS.md**, but the essential steps are:
```bash
docker build -t linux/env .
docker run -it --name mylinuxenv linux/env
```
Exit the container:
```bash
exit
```
Return to it later:
```bash
docker start mylinuxenv
docker exec -it mylinuxenv bash
```
---
## π Repository Structure
```
linux_training_environment_playground/
β
βββ Dockerfile
βββ INSTRUCTIONS.md # Student exercises
βββ README.md # Instructor guide
βββ VERSION
β
βββ exercises/ # Optional exercise files
β βββ myzip.zip
β
βββ tests/ # Autograding scripts
β βββ check_username.sh
β
βββ .github/
βββ classroom/
βββ autograding.json
```
---
## π― Learning Goals
Students completing the exercises will be able to:
- Navigate the Linux filesystem
- Create and manage files and directories
- Use text editors and content viewers
- Work with permissions
- Manage users and groups
- Use search tools (`grep`, `find`)
- Understand pipes and redirection
- Inspect and manage processes
- Install packages and explore the system
---
## π§ Updating the Template Repository
After updating:
- `INSTRUCTIONS.md`
- `Dockerfile`
- `tests/`
- `.github/classroom/autograding.json`
New Classroom assignments will use the updated version automatically.
Already-created student repositories will **not** update β they remain snapshots.
For major updates, increment the version in the `VERSION` file.
---
## π License
MIT License. See `LICENSE` for details.
---