Является ли он избыточным в Dockfile для запуска корневого каталога USER, так как вы уже root?

Глядя на этот Dockerfile, он помечается:

FROM sequenceiq/pam:centos-6.5
MAINTAINER SequenceIQ

USER root

Теперь это кажется излишним, поскольку по умолчанию вы уже являетесь пользователем root. Но ради аргумента - давайте посмотрим на родительский Dockerfile... который не меняет пользователя.

Теперь давайте посмотрим на прародитель Dockerfile. (Похоже, он недоступен).

Мой вопрос: избыточно ли в Dockfile запускать USER root, поскольку вы уже являетесь пользователем root?

Ответ 1

Да, это избыточно, но почти нет недостатка, чтобы оставить эту избыточность. Возможно, это было сделано для разработки против других изображений или для поддержки использования, которое может заменить базовое изображение. Это можно сделать для предотвращения будущих проблем, если изображение вверх по течению изменит его поведение. Или они могут просто хотеть быть явным, поэтому очистить этот контейнер нужно, чтобы запускать команды как root.

Ответ 2

Если изображение было создано из источника, который изменил пользователя root, у вас может не быть доступа ко всем ресурсам внутри него. Однако, если вы загрузите изображение:

ОТ xxxxxx/xxxxxx: последние
USER root

Это даст вам root-доступ к ресурсам изображений. Я просто использовал это после отказа в доступе к изменению /etc/apt/sources.list в существующем образе, который не был моим. Это работало нормально, и позвольте мне изменить sources.list

Ответ 3

Это на самом деле зависит от изображения. В некоторых изображениях, таких как grafana/grafana, пользователь по умолчанию не является пользователем root и sudo отсутствует. Таким образом, вы должны использовать USER root для любой привилегированной задачи (например, обновление и установка приложений через apt).