Dockerfile USER: запись файла с ограниченными правами
Практическая задача Docker: Пользователь контейнера и права на файлы. Условие описывает предоставленные файлы, доступный базовый образ и требования к сборке или запуску. Изменяйте только разрешённые файлы. Проверьте пути, рабочую директорию, пользователя и различие настроек сборки и запуска. Задача помогает закрепить поведение Dockerfile на конкретном проекте; объяснения и дальнейшая практика находятся в полном курсе Docker для разработчика.
Запись с ограниченными правами
Выданный write.sh записывает строку в /data/record.txt, затем читает этот файл. Подготовьте образ, в котором скрипт выполнится от непривилегированного пользователя. Менять можно только Dockerfile; содержимое write.sh сохраните.
Контекст сборки — корень выданного рабочего пространства. Используйте busybox:1.36, скопируйте write.sh в /opt/write.sh и задайте CMD для его запуска через sh. Устанавливать пакеты и обращаться к сети не нужно.
Требования:
- пользователь процесса по умолчанию —
10001:10001; - каталог
/dataсуществует, его числовой владелец и группа —10001:10001; - права каталога —
750, то естьrwxr-x---: владельцу чтение, запись и проход, группе чтение и проход, остальным доступа нет; - команда
sh /opt/write.shсоздаёт файл и печатаетrecord=ready, завершившись с кодом 0.
Числовую маску подбирать не требуется: для этого заданного режима используйте готовую команду chmod 750 /data внутри RUN. Самостоятельно согласуйте создание каталога, его владельца и пользователя процесса. Возврат к root или chmod 777 не удовлетворяет условиям.
Проверочная команда сверяет UID/GID процесса, числового владельца и группу /data, права 750 и выполнение выданного скрипта. Метаданные USER и CMD проверяются отдельно. Запуск с переопределённой контрольной командой не доказывает точное поведение произвольного CMD: дополнительно проверьте свой стандартный запуск без аргументов, ожидая тот же текст и код 0.
Это отдельная задача на файловые права в образе. Права внешнего bind mount или named volume из них автоматически не следуют; соответствующий опыт с HTTP-сервисом выполняется в локальной лабораторной.
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
