An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

# 🐧 Linux Training Environment – Docker Playground

_A GitHub Classroom–ready Linux learning environment_

![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)
![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)
![Bash](https://img.shields.io/badge/Bash-4EAA25?style=for-the-badge&logo=gnubash&logoColor=white)
![GitHub Classroom](https://img.shields.io/badge/GitHub_Classroom-181717?style=for-the-badge&logo=github&logoColor=white)

---

## πŸ“š 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.

---