Я прохожу курс “от 0 до Linux админа” вот здесь Курс Linux, и у меня возникла проблема: я попытался создать контейнер с нуля, используя только chroot, unshare и overlayfs. У меня почти всё получилось, но возникли трудности с изоляцией PID.
Что у меня отлично работает:
- Создание изолированной файловой системы с помощью debootstrap.
- Использование OverlayFS для создания неизменяемого базового образа с writable слоем.
- Изоляция файловой системы, сети, UTS и IPC пространств имён с использованием unshare.
- Настройка cgroup для ограничения памяти и CPU.
Однако я не могу получить рабочую изоляцию PID. Я перепробовал всё:
- Использование unshare --pid --fork --mount-proc.
- Ручное монтирование нового procfs с помощью mount -t proc proc /proc внутри chroot.
- Сложные shell-скрипты для попытки корректного времени выполнения.
Тем не менее, я всё равно вижу все процессы хоста, тогда как мне нужно видеть только 1-2 процесса. Я пытался следовать runс, использовал overlayFS и rootfs (Debian, позже хочу использовать Alpine, как Docker, но сначала нужно решить эту ошибку).
Есть ли кто-то, кто также углублялся в эту тему? Как вы добились стабильной изоляции PID без использования таких решений, как ‘runc’?
Вот ссылка на мой репозиторий GitHub: Container Setup. Буду признателен за любые советы!