Установка "en_US" в контейнере RHEL
Я проверяю роль с помощью молекулы. Роль установить корпоративный двоичный файл, над которым я не понимаю, я просто хочу ./binary --silent
и это все. За RedHat.
Это работает для RedHat 6.9 VM. Но он не работает над док-контейнером registry.access.redhat.com/rhel6:6.9.
Сообщение об ошибке говорит:
Msgstr "Неверный язык операционной системы (en_US не найден)".
Что может отсутствовать в контейнере, который будет на виртуальной машине? Какое-то местное происхождение...? Я не смог найти документ об этом, но есть ли какое-то описание RedHat о разнице между их виртуальными машинами с "минимальной установкой из ISO" и контейнерами?
Спасибо за любую помощь
1 ответ
Если вы бежите locale -a
на образе Docker, который вы используете, вы получите следующий вывод:
C
en_US.utf8
POSIX
Запустите ту же команду на своей виртуальной машине и сравните вывод. Если он содержит строку en_US
(без суффикса utf-8), попробуйте добавить следующие строки прямо ниже FROM
директива в вашем Dockerfile
:
RUN localedef -v -c -i en_US -f UTF-8 en_US; exit 0
RUN sed -i 's/en_US.UTF-8/en_US/g' /etc/sysconfig/i18n && source /etc/sysconfig/i18n
Это создаст локаль en_US с кодировкой UTF-8 с именем en_US (без суффикса).