Как настроить локали в Unicode в контейнере Docker Ubuntu 14.04?

22

Я установил контейнер Ubuntu Trusty с помощью Docker, и когда я подключаюсь к нему, я вижу, что языковой стандарт установлен на минимальный минимум:

sudo docker run -i -t <id> /bin/bash
[email protected]<id>:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Мне нужно использовать языковой стандарт Юникод (например, американский английский, en_US.UTF-8 ).

Я попытался отредактировать файл / etc / default / locale и поместить его внутри:

# cat /etc/default/locale 
LANG=en_US.UTF-8

Но даже после выхода из контейнера и возвращения, языковой стандарт все еще не установлен правильно.

Я также попытался использовать команду update-locale без каких-либо успехов:

[email protected]:/# update-locale LANG=en_US.UTF-8
[email protected]:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

В моей локальной конфигурации у меня есть следующая конфигурация:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Как я могу иметь то же самое в контейнере Docker?

Спасибо заранее!

    
задан Pierre 04.02.2015 в 03:38
источник

3 ответа

14

Файл /etc/default/locale загружается PAM; например, /etc/pam.d/login . Тем не менее, PAM не вызывается при запуске команды в контейнере Docker. Чтобы настроить локаль, просто установите соответствующую переменную среды в файле Docker. Пример:

FROM ubuntu:trusty
ENV LANG en_US.UTF-8
CMD ["/bin/bash"]
    
ответ дан Andreas Veithen 06.02.2015 в 00:10
источник
41

Я использую это в своем Dockerfile :

# Set the locale
RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8

Можно также использовать однострочный слой ENV :

RUN locale-gen en_US.UTF-8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
    
ответ дан czerasz 26.03.2015 в 11:02
7

Try

ENV LANG C.UTF-8

Если вы получаете ошибку unsupported locale setting и не хотите устанавливать какие-либо новые локали.

    
ответ дан emisilva 22.09.2016 в 00:27