Введение в ограничения в Docker
Обычный запуск отдаёт контейнеру память компьютера, право писать файлы и часть возможностей службы. Так удобно для быстрой проверки, но на общей машине одна копия может забрать слишком много и помешать соседним программам.
Потолок памяти нужен, когда процесс раздувается или течёт, а остальным службам на хосте тоже нужен запас. Без верхней границы контейнер может дойти до отказа всей системы, а не только своей программы.
Доля процессора ограничивает, сколько ядер может занять одна копия в пике нагрузки. Это сглаживает всплески, когда несколько контейнеров работают рядом и каждый хочет считать без паузы.
Запрет записи в корень файловой системы мешает программе портить слои образа и оставлять мусор внутри шаблона. Запуск от чужой учётной записи снижает ущерб, если код внутри вдруг попытается сделать лишнее от имени root.
Снятие лишних возможностей убирает права, которые служба даёт по умолчанию, но редко нужны обычному приложению. Так копия не получает доступ к сетевым настройкам хоста и устройствам без явной нужды.
Полный доступ к устройствам компьютера почти никогда не включают для сайта или скрипта. Его оставляют для узких задач, где программа правда должна говорить с железом напрямую, а не для повседневного запуска.