Основные команды Unix образа Keycloak Docker недоступны

Я настроил свой сервер идентификации Keycloak, запустив файл .yml, который использует образ докера jboss/keycloak:9.0.0.

Теперь я хочу попасть внутрь контейнера и изменить некоторые файлы, чтобы провести тестирование.

К сожалению, после того, как я попал внутрь работающего контейнера, я понял, что некоторые очень простые команды UNIX, такие как sudo или vi (и многие другие), не найдены (а также такие команды, как apt-get или yum, которые я использовалась для загрузки пакетов команд и не удалась).

Согласно этому вопросу кажется, что базовая ОС контейнера ( Redhat Universal Base Image) использует команду microdnf для управления программным обеспечением, но, к сожалению, когда я попытался использовать эту команду для выполнения каких-либо действий, я получил следующее сообщение:

ошибка: Не удалось создать: /var/cache/yum/metadata

Не могли бы вы предложить какой-либо обходной путь для моего случая? Мне просто нужно использовать команду текстового редактора, например vi, и привилегии root для моего пользователя (такие команды, как sudo, su или chmod). Заранее спасибо.


person NickAth    schedule 14.05.2021    source источник
comment
Что именно вам нужно сделать?   -  person dreamcrash    schedule 14.05.2021
comment
Я хотел бы иметь возможность изменять файл standalone.xml сервера Jboss, а также генерировать некоторые сертификаты для сервера, если это невозможно, я хотел бы смонтировать эти сертификаты и измененный файл standalone.xml из моей системы в контейнер при сборке   -  person NickAth    schedule 14.05.2021
comment
Разве не было бы достаточно просто копировать эти файлы, используя файл докера?   -  person dreamcrash    schedule 14.05.2021
comment
Да, это было бы решением, но я думаю, что оно отнимает больше времени, так как я хотел бы поиграть с автономным в контейнере, и таким образом мне нужно было бы каждый раз перестраивать контейнер, насколько я знаю. Чтобы добиться того, что вы говорите, я думаю, мне следует создать Dockerfile, чтобы расширить функциональность образа keycloal и добавить команды cp, я прав?   -  person NickAth    schedule 14.05.2021
comment
Точно, AFAIK для сертификатов, вам все равно придется воссоздавать контейнер, потому что Keycloak создает trushstore в начале, но не цитируйте меня по этому поводу.   -  person dreamcrash    schedule 14.05.2021
comment
Что ж, пока это то, что у меня есть на данный момент, я буду использовать это как решение, спасибо за ваше время и помощь :)   -  person NickAth    schedule 14.05.2021
comment
Добро пожаловать; может быть, у кого-то есть лучшее решение, мне было бы интересно узнать, так как я сталкиваюсь (и до сих пор сталкиваюсь) с той же болью   -  person dreamcrash    schedule 14.05.2021


Ответы (1)


Похоже, вы пытаетесь использовать подход из мира без докеров (старой школы) в мире докеров. Это не правильно. Обычно вам не нужно идти в контейнер и редактировать там какой-либо файл конфигурации — это изменение, скорее всего, будет потеряно (это зависит от конфигурации контейнера). Контейнеры обычно настраиваются с помощью переменных среды или томов.

Пример использования сертификатов TLS: требуется Keycloak Docker HTTPS

https://hub.docker.com/r/jboss/keycloak/ — это также хорошая отправная точка для проверки доступной переменной среды, которая может помочь вам достичь того, что вам нужно. Например, PROXY_ADDRESS_FORWARDING=true включить опцию, когда вы можете запустить контейнер Keycloak за балансировщиком нагрузки, не касаясь какого-либо файла конфигурации.

Я бы сказал, что добавление собственных файлов конфигурации в сборку - не лучший вариант - вам придется поддерживать свой собственный образ. Просто используйте тома и замените файлы конфигурации по умолчанию в контейнере вашими собственными файлами конфигурации из файловой системы хост-ОС, например:

-v /host-os-path/my-custom-standalone-ha.xml:/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
person Jan Garaj    schedule 15.05.2021
comment
Спасибо за ваше предложение, действительно, я смонтировал папку конфигурации автономного сервера, содержащую сертификаты и измененный файл standalone-ha.xml, в файл .yml, и похоже, что именно так я и должен был сделать это в первую очередь. - person NickAth; 16.05.2021