Как запустить tnet -счетчики как не root в Openshift? - PullRequest
0 голосов
/ 10 апреля 2020

Это мой dockerfile

FROM my-private-docker-repo.net/dotnet/core/aspnet:3.0 AS base
FROM my-private-docker-repo.net/dotnet/core/sdk:3.0 AS build
WORKDIR /src

RUN dotnet tool install --global dotnet-trace 
RUN dotnet tool install --global dotnet-counters
RUN dotnet tool install -g dotnet-dump

# build the app
FROM build AS publish
# publish the app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
COPY --from=build /root/.dotnet/tools/ /app/tools
ENV PATH="/app/tools:${PATH}"

ENTRYPOINT ["dotnet", "something.dll"]

Образ построен с использованием docker и запущен в частном локальном кластере Openshift. Теперь, когда я открываю контейнерный терминал в Openshift и набираю
dotnet-counters ps, говорится: «Отказано в доступе».
whoami говорит: whoami: cannot find name for user ID 1025960000

Когда я запускаю этот образ локально (docker run something) а затем docker exec -it 53c /bin/bash работает как положено:
dotnet-counters ps отображает вывод
whoami говорит root

Документация говорит

Чтобы прикрепить к process, do tnet -counters требует, чтобы вы были тем же пользователем, что и целевой процесс, или root пользователем.

Так что я предполагаю, что он не работает в Openshift, потому что пользователь терминала Я не являюсь root или целевым пользователем процесса.

То, что я до сих пор пробовал (имейте в виду, что я не совсем хорош в linux системах):
Спросил команду Openshift, могу ли я работать как root внутри контейнера. Они просто сказали «нет», потому что безопасность.
Затем я попытался изменить Dockerfile, добавив это непосредственно перед строкой ENTRYPOINT.

USER 1025960000

Я хотел, чтобы целевой процесс запускался под тем же пользователем, который я получаю при открытии терминала. Потому что, насколько я вижу, терминал всегда открывается одним и тем же пользователем. Я предполагал, что если я запусту приложение под тем же пользователем, что и при открытии терминала, то ему будет разрешено запускать счетчики. Но после попытки этого нового образа, dotnet-counters ps говорит «Отказано в доступе» как локально в Docker, так и в Openshift . Однако когда я удаленно в локальный контейнер docker, whoami говорит whoami: cannot find name for user ID 1025960000.

Затем я попытался изменить Dockerfile, чтобы создать пользовательского пользователя с известным паролем и запустить процесс, используя его

RUN useradd -m -p <hashed password> -s /bin/bash runtimeuser 
USER runtimeuser

А потом я захотел изменить пользователя по умолчанию на этого runtimeuser внутри терминала openshift

$ su runtimeuser
Password: 
su: cannot set groups: Operation not permitted

... Я исчерпал свои идеи о том, как подойти к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...