Учебная серверная среда: изоляция, SSH и контейнеры

Методический материал для лекции: почему каждому студенту выдаётся отдельная среда, как работает подключение по SSH, зачем нужны разные порты и почему учебный контейнер похож на сервер, но не является полноценной виртуальной машиной.

Цели лекции

Эта лекция нужна, чтобы студенты понимали не только команды из практической работы, но и саму учебную среду, в которой они работают. На занятии не требуется глубокое изучение Docker. Важно понять идею: каждому студенту выдаётся отдельное изолированное окружение, похожее на маленький сервер.

Формат

Лекция

Материал рассчитан примерно на 50–60 минут объяснения с вопросами и примерами.

Аудитория

Первый курс

Без сложной теории про ядро Linux, namespaces, cgroups и внутренности Docker.

Главная идея

Изоляция

Ошибки одного студента не должны ломать работу других студентов.

После лекции студент должен понимать:

1. Почему нельзя всем работать на одном сервере

Представим, что на практической работе все 18 студентов подключаются к одному серверу под одним пользователем. На первый взгляд это кажется простым решением: один сервер, один логин, один пароль. Но для учебной работы это быстро превращается в хаос.

Вопрос для обсуждения: что может случиться, если все студенты работают в одной системе под одним пользователем?

Возможные проблемы

Проблема Что произойдёт Почему это плохо
Один студент удалил чужие файлы Файлы другого студента исчезли Невозможно нормально проверить работу
Один студент сломал Nginx Сайт перестал работать у всех Ошибка одного мешает всей группе
Все меняют один конфиг Настройки конфликтуют между собой Невозможно понять, чья команда всё сломала
Один общий пароль Нельзя понять, кто реально заходил Нет ответственности за действия
Один сайт на всех Все перезаписывают index.html Работы студентов смешиваются
Главный вывод: один общий сервер без разделения — плохая учебная среда. Студент должен иметь возможность ошибаться, не ломая работу всей группы.

2. Что такое изоляция в учебной среде

Изоляция означает, что каждому студенту выдаётся отдельное место для работы. Внутри этого места студент может создавать файлы, менять настройки, устанавливать программы и запускать службы. При этом его действия не должны напрямую мешать другим студентам.

Простая аналогия

Представьте компьютерный класс. Плохой вариант — всем студентам выдать один стол, одну тетрадь и одну ручку. Хороший вариант — у каждого студента есть своё рабочее место.

Без изоляции:

18 студентов ──> один сервер ──> одни файлы и настройки

С изоляцией:

student01 ──> своя среда
student02 ──> своя среда
student03 ──> своя среда
...
student18 ──> своя среда

Что изолируется

Файлы

У каждого студента свои конфиги, свой сайт и своя директория /var/www/site.

Процессы

Если студент запускает Nginx, он запускает его внутри своей среды.

Сеть

У каждой среды может быть свой внутренний адрес и свой проброшенный SSH-порт.

Плюс для обучения: студент может экспериментировать. Если он сломал свою среду, можно пересоздать только её, не трогая остальных.

3. Виртуальная машина и контейнер простыми словами

Для выдачи отдельной среды можно использовать разные технологии. Два популярных варианта — виртуальные машины и контейнеры.

Виртуальная машина

Виртуальная машина — это почти отдельный компьютер внутри физического сервера. У неё есть своя операционная система, своё ядро, свои службы, свой диск и свои ресурсы.

Контейнер

Контейнер — это более лёгкая изолированная среда. Она похожа на отдельный сервер для учебных задач, но использует общее ядро хостовой системы. Поэтому контейнер запускается быстрее и требует меньше ресурсов.

Критерий Виртуальная машина Контейнер
Похожа на отдельный компьютер Да Частично
Запускается быстро Обычно медленнее Обычно быстрее
Требует много ресурсов Больше Меньше
Подходит для 18 учебных сред Да, но нужно больше ресурсов Да, удобно и быстро
Полностью повторяет обычный сервер Почти да Нет, есть ограничения
Коротко: виртуальная машина — это отдельная квартира. Контейнер — это отдельная комната в большом здании. Комната отдельная, но фундамент и коммуникации общие.

Почему для учебной практики удобно использовать контейнеры

4. Что именно получает студент

На практике студент получает доступ к отдельной учебной среде Ubuntu. Для студента она выглядит как небольшой сервер: можно подключиться по SSH, работать в терминале, создавать пользователей и группы, настраивать права, ставить Nginx и размещать сайт.

Физический сервер преподавателя
│
├── учебная среда student01
│   ├── пользователь student
│   ├── SSH
│   ├── /var/www/site
│   └── Nginx
│
├── учебная среда student02
│   ├── пользователь student
│   ├── SSH
│   ├── /var/www/site
│   └── Nginx
│
└── учебная среда student18
    ├── пользователь student
    ├── SSH
    ├── /var/www/site
    └── Nginx

Что в такой среде настоящее

Что может отличаться от обычного сервера

Важно: учебная среда подходит для отработки большинства базовых навыков администрирования, но это не полноценная замена отдельному физическому серверу или виртуальной машине.

5. Как студент подключается к своей среде по SSH

SSH — это способ удалённо открыть терминал на сервере. В учебной лаборатории студенты подключаются не к своему компьютеру, а к удалённой среде на сервере преподавателя.

Обычная команда подключения

ssh student@SERVER_IP -p 2201

Разберём команду:

Фрагмент Значение
ssh Программа для подключения к удалённой системе
student Имя пользователя внутри учебной среды
SERVER_IP IP-адрес сервера преподавателя
-p 2201 Порт, через который студент попадает именно в свою среду

Почему у разных студентов разные порты

Обычно SSH работает на порту 22. Но если на одном физическом сервере запущено 18 учебных сред, всем нельзя выдать один и тот же внешний порт 22. Поэтому используется проброс портов.

SERVER_IP:2201 ──> student01:22
SERVER_IP:2202 ──> student02:22
SERVER_IP:2203 ──> student03:22
...
SERVER_IP:2218 ──> student18:22
Снаружи порт разный: 2201, 2202, 2203. Внутри каждой учебной среды SSH всё равно работает на обычном порту 22.

6. Порты как двери в систему

Порт можно представить как дверь в определённую службу. IP-адрес указывает на сервер, а порт указывает, к какой программе на этом сервере нужно подключиться.

Аналогия

IP-адрес — это адрес здания. Порт — это номер кабинета. В одном здании может быть много кабинетов, и в каждом кабинете работает своя служба.

Порт Служба Для чего используется
22 SSH Удалённое подключение к терминалу
80 HTTP Открытие сайта без шифрования
443 HTTPS Открытие сайта с шифрованием

Что значит запись 2201:22

Такая запись означает: внешний порт 2201 на сервере преподавателя ведёт во внутренний порт 22 учебной среды.

2201:22
│    │
│    └── порт внутри учебной среды
└─────── порт на сервере преподавателя
Практический смысл: каждый студент подключается к одному серверу преподавателя, но попадает в свою отдельную среду.

7. Что происходит с файлами внутри учебной среды

Учебная среда может быть временной. Это значит, что после окончания пары преподаватель может удалить её и создать заново перед следующим занятием. Такой подход помогает начинать каждую практику с чистого состояния.

Почему это удобно

Что важно помнить студенту

Всё, что сделано внутри учебной среды, может быть удалено после занятия. Не храните там личные файлы, пароли, курсовые работы и данные, которые нужны вам надолго.

Где должны лежать файлы сайта на практической

В практической работе файлы сайта размещаются в директории:

/var/www/site

Эта директория нужна для учебного сайта. Именно её студент настраивает в Nginx через директиву root.

server {
    listen 80;
    server_name student01.lab.example.com;

    root /var/www/site;
    index index.html;
}

8. Ограничения учебного контейнера

Контейнер похож на отдельный сервер, но не является им полностью. Это важно понимать, чтобы не путать ошибки в командах с особенностями учебной среды.

Команда systemctl

На обычном сервере службы часто управляются через systemctl:

sudo systemctl restart nginx

В учебном контейнере эта команда может не работать, потому что внутри контейнера не всегда запущен полноценный системный менеджер служб.

Вместо этого может использоваться:

sudo service nginx restart
Простое объяснение: systemctl управляет службами через специальный системный механизм. Если этот механизм внутри контейнера не запущен, команда работать не будет.

Firewall внутри контейнера

На обычном сервере firewall управляет сетевым доступом к системе. В контейнерной лаборатории сеть устроена сложнее: часть правил работает на сервере преподавателя, а часть — внутри учебной среды. Поэтому настройка firewall в контейнере может отличаться от полноценной виртуальной машины.

Если команда UFW ведёт себя не так, как на обычном сервере, это может быть не ошибка студента, а особенность контейнерной среды.

Что всё равно полезно отрабатывать

9. Правила безопасной работы в учебной среде

Даже если среда учебная и временная, к ней нужно относиться как к настоящему серверу. Это формирует нормальную профессиональную привычку.

Что можно делать

  • создавать учебные файлы;
  • настраивать свой сайт;
  • устанавливать нужные пакеты;
  • изменять конфиги в рамках задания;
  • ошибаться и исправлять ошибки.

Что нельзя делать

  • хранить личные пароли;
  • публиковать токены и секретные ключи;
  • мешать работе других студентов;
  • пытаться подключаться к чужим средам;
  • использовать сервер не по учебному заданию.

Почему нельзя использовать chmod 777 без необходимости

Команда chmod 777 даёт полные права всем: владельцу, группе и остальным пользователям. Для учебной проверки это иногда кажется быстрым решением, но в реальной практике это плохая привычка.

777 = rwx rwx rwx
      │   │   │
      │   │   └── все остальные могут читать, писать и запускать
      │   └────── группа может читать, писать и запускать
      └────────── владелец может читать, писать и запускать
Правило: не открывайте доступ всем подряд, если достаточно выдать права только нужной группе.

Почему используется группа deploy

В практической работе файлы сайта должны принадлежать пользователю root и группе deploy. Это нужно для разделения ответственности:

sudo groupadd deploy
sudo usermod -aG deploy student
sudo chown -R root:deploy /var/www/site
sudo chmod -R 770 /var/www/site

10. Типичные ошибки студентов

Большая часть проблем на сервере решается не угадыванием, а последовательной проверкой. Ниже — частые ошибки и их причины.

Ситуация Возможная причина Что проверить
Не получается подключиться по SSH Неверный порт, пароль, логин или ключ ssh student@SERVER_IP -p 2201
Подключился не туда Использован порт другого студента Сверить номер студента и SSH-порт
Команда systemctl не работает Среда запущена в контейнере Использовать service, если так указано в задании
Сайт показывает 403 Проблема с правами на файлы или директорию ls -la /var/www/site
Сайт показывает 404 Файл не найден или неверный root Путь в Nginx и наличие index.html
После выхода из SSH не применились группы Сессия была открыта до добавления в группу Выйти и подключиться заново

Правильная логика диагностики

  1. Понять, где проблема. Подключение, права, Nginx, домен или порт?
  2. Проверить простую вещь. Логин, порт, имя файла, путь к директории.
  3. Проверить статус службы. Например, запущен ли Nginx.
  4. Проверить конфиг. Ошибка в одной строке может сломать весь сайт.
  5. Смотреть вывод команды. Терминал обычно прямо пишет, что пошло не так.

11. Рекомендуемый план рассказа на 60 минут

Этот блок можно использовать преподавателю как структуру лекции.

Время Тема Что объяснить
0–7 минут Проблема общего сервера Почему нельзя всем работать в одной системе без разделения
7–15 минут Изоляция Отдельная среда для каждого студента, защита работ друг от друга
15–27 минут VM и контейнер Простое сравнение, без глубоких технических деталей
27–38 минут SSH и порты Почему один студент подключается к 2201, другой к 2202
38–47 минут Файлы и временность среды Почему данные могут исчезнуть после занятия
47–55 минут Ограничения контейнеров Почему некоторые команды отличаются от обычного сервера
55–60 минут Итоги и вопросы Повторить главные выводы и разобрать ошибки

12. Вопросы для закрепления

Вопросы студентам

  1. Почему плохо, если все студенты работают на одном сервере под одним пользователем?
  2. Что означает изоляция учебной среды?
  3. Чем контейнер проще виртуальной машины?
  4. Почему контейнер не является полноценной виртуальной машиной?
  5. Зачем студентам выдают разные SSH-порты?
  6. Что означает запись 2201:22?
  7. Почему файлы внутри учебной среды могут исчезнуть после занятия?
  8. Почему команда systemctl может не работать в контейнере?
  9. Почему не стоит использовать chmod 777?
  10. Зачем нужна группа deploy?

Короткие ответы

  1. Работы смешаются, ошибки одного сломают среду для всех.
  2. У каждого отдельное место для работы.
  3. Он легче и быстрее запускается.
  4. Он использует общие механизмы хостовой системы и имеет ограничения.
  5. Чтобы каждый попадал в свою среду.
  6. Внешний порт 2201 ведёт во внутренний порт 22.
  7. Среда учебная и может быть пересоздана.
  8. Внутри контейнера может не быть полноценного systemd.
  9. Это открывает полный доступ всем.
  10. Чтобы дать права на сайт нужным пользователям через группу.

13. Главные выводы

  1. Каждому студенту нужна отдельная среда. Это защищает работы студентов друг от друга.
  2. Контейнер похож на маленький сервер. В нём можно работать с Linux, SSH, пользователями, правами и Nginx.
  3. Контейнер не равен полноценной виртуальной машине. Некоторые системные команды и firewall могут работать иначе.
  4. SSH-порт у каждого студента свой. Например, 2201 ведёт к первому студенту, 2202 — ко второму.
  5. Учебная среда временная. После пары она может быть удалена и создана заново.
  6. Серверные привычки должны быть профессиональными даже в учебной среде. Не использовать chmod 777 без необходимости, не хранить секреты, аккуратно работать с конфигами.
Финальная мысль: учебная контейнерная среда нужна не для изучения Docker, а для того, чтобы каждый студент получил свой отдельный безопасный “мини-сервер” для практики.