Я использую контейнер Ubuntu Docker. У меня норвежская клавиатура, и мне нужно использовать норвежские символы (øæå).
Кодировка символов моего терминала установлена на UTF-8, и я подключаюсь к своему контейнеру с помощью SSH. Однако я не могу ни вводить норвежские символы, ни копировать и вставлять норвежские символы, ни использовать CTL + SHIFT + U + 00f8.
Я попытался:
locale-gen nb_NO.UTF-8
но ничего не изменилось. Как установить языковой стандарт и клавиатуру внутри контейнера Docker?
apt-get -y install locales
при использовании UbuntuRUN touch /usr/share/locale/locale.alias
перед вызовомlocale-gen
, чтобы избежать фатальной ошибки «файл не найден»sed
Сценарий рода неуклюжим. Старайтесьs/# \(en_US\.UTF-8 .*\)/\1/
не повторять поисковую фразу в строке замены, фиксируя ее.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Те, кто использует Debian, также должны установить
locales
package.Этот ответ мне очень помог.
источник
Просто добавь
в ваш Dockerfile. (Возможно, вам потребуется убедиться, что
locales
пакет установлен.) Для основной операции больше ничего не требуется. Между тем, за пределами Ubuntu,locale-gen
не принимает никаких аргументов, поэтому ни одно из «исправлений», использующих его, не работает, например, в Debian. Ubuntu пропатчена,locale-gen
чтобы принять список локалей для генерации, но патч на данный момент не принят ни в Debian, ни где-либо еще.источник
C.UTF-8
доступно на все системы без необходимости устанавливать что - либо, и это должно быть в основном достаточно.locales
.docker run
вместо этого установить переменные env в команде args: stackoverflow.com/questions/28405902/…apt-get install -y locales
На самом деле я столкнулся с той же проблемой, но ни один из предоставленных ответов не на 100% работает с debian: latest, даже если они дают хорошие подсказки.
Самая большая разница заключается в том, что вы должны убедиться, что установлены и locales, и locales-all , последний уже содержит en_US.UTF-8, поэтому вам не нужно создавать его с помощью local-gen или dpkg-reconfigure .
Вот что я сделал в своем Dockerfile, чтобы он заработал:
источник
apt-cache show locales-all
? Это определенно официальный пакет, доступный в Debian.Укажите переменные среды
LANG
и,LC_ALL
используя-e
при запуске вашей команды:Нет необходимости изменять Dockerfile.
источник
-e
аргументах работают с Докером-композом также, кстати.C.UTF-8
локаль. Обычно они не включают языковые стандарты (напримерen_US.UTF-8
). Для этого вам нужно установитьlocales-all
(большой) или установитьlocales
и запуститьlocale-gen
после окончания/etc/locale.gen
.Совет: просмотрите форумы документации по контейнерам, например форум Docker .
Вот решение для debian и ubuntu , добавьте следующее в свой Dockerfile:
источник
Вам, ребята, не нужны эти сложные вещи для установки локалей в Ubuntu / Debian. Вам даже не нужен
/etc/local.gen
файл.Просто
locale-gen
все сделаю и автор только упустилlocales
пакет.Я нашел это самым простым и эффективным. Я подтверждаю, что он работает на Ubuntu 16.04.
источник
@ Mixel в ответ работал большой для Ubuntu основе докер изображение , которое мы имеем.
Однако у нас также есть образ докера на основе centos для тестирования рецептов с помощью chef (с использованием
kitchen-docker
драйвера). Один из предварительно установленных пакетов не удалось установить из-за того, что не был задан языковой стандарт. Чтобы установить локаль, мне пришлось запустить следующее:Я получил эту информацию из этого ответа на ServerFault .
После выполнения вышеуказанных команд в рамках подготовки докера пакет установлен без каких-либо ошибок. Откуда
.kitchen.yml
:источник
Мне не нравятся переменные среды Docker, когда я не ожидаю, что пользователь образа Docker изменит их.
Просто положите куда-нибудь в один
RUN
. Если у вас не сгенерированы локали UTF-8, вы можете выполнить следующий набор команд:источник
locale
вывод не изменяется ни при выполнении последующих команд, ни при выполнении последующихRUN
блоков, ни при построении другого изображения с использованием текущего изображения в качестве основы. Может быть, потребуются дополнительные действия, чтобы применить эти изменения?ENV
likeENV LC_ALL=en_US.UTF-8
.Вместо того, чтобы сбрасывать языковой стандарт после установки пакета локалей, вы можете ответить на вопросы, которые вам обычно задают (что отключено
noninteractive
) перед установкой пакета, чтобы сценарии пакета правильно настраивали языковой стандарт, в этом примере языковой стандарт устанавливается на английский ( Британский, UTF-8):источник
Для меня то, что работало в образе ubuntu :
источник
Я использовал это (после
RUN apt-get install -y python3
):И печатает
UTF8 works nice! 👌
правильно.источник