2015-02-09 2 views
36

Ich benutze einen Ubuntu Docker Container. Ich habe eine norwegische Tastatur und brauche norwegische Zeichen (øæå).Wie stelle ich das Gebietsschema in einem Ubuntu Docker Container ein?

Meine Terminalzeichencodierung ist auf UTF-8 eingestellt und ich bin mit meinem Container mit SSH verbunden. Ich bin jedoch nicht in der Lage, norwegische Zeichen einzugeben, norwegische Zeichen zu kopieren und einzufügen oder CTL + UMSCH + U + 00f8 zu verwenden.

Ich habe versucht:

locale-gen nb_NO.UTF-8 

aber nichts geändert. Wie lege ich das Gebietsschema und die Tastatur in einem Docker-Container fest?

Antwort

51

Setzen Sie in Ihrem Dockerfile etwas angepasst von

# Set the locale 
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    locale-gen 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8  

dies aus dem sehr guten Beitrag zu diesem Thema extrahiert wird, aus

http://jaredmarkell.com/docker-and-locales/

+0

seine nicht funktioniert, wenn Sie Debian verwenden: jessie als Basisbehälter – iDexter

+0

in diesem Fall sehen mixel Antwort – user2915097

+0

Es gibt kein 'locale-gen' auf Fedora –

41

Diejenigen, die Debian verwenden auch locales Paket installieren .

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales 

RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    dpkg-reconfigure --frontend=noninteractive locales && \ 
    update-locale LANG=en_US.UTF-8 

ENV LANG en_US.UTF-8 

Diese answer hat mir sehr geholfen.

+0

Ich glaube nicht, dass Sie das Echo ...>/etc/Standard/Gebietsschema-Befehl; 'update-locale' macht dasselbe. – dimo414

15

Fügen Sie einfach

ENV LANG C.UTF-8 
ENV LC_ALL C.UTF-8 

in Ihre Dockerfile. Für die grundlegende Operation wird nichts anderes benötigt. Unterdessen locale-gen akzeptiert keine Argumente, deshalb keine der 'Fixes', die es verwenden.

+0

Funktionierte nicht für mich auf einem Ubuntu-Image. Diese [Antwort] (https://stackoverflow.com/a/38553499/675577) funktionierte jedoch. – dialex

+1

Könnten Sie bitte Details angeben? 'C.UTF-8' ist auf allen Systemen verfügbar, ohne dass etwas installiert werden muss, und es sollte * meistens * genug sein. – andrewsh

6

Ich hatte tatsächlich zufällig von dem gleichen Problem gelitten, aber keine der bereitgestellten Antworten arbeiten zu 100% mit debian: aktuell, auch wenn sie gute Hinweise liefern.

Der größte Unterschied ist, dass Sie sicher, sollten beide localesundlocales-alle installiert sind, diese bereits enthalten en_US.UTF-8, so dass Sie es mit lokalen nicht erzeugen müssen -gen oder dpkg-reconfigure.

Hier ist, was ich in meinem Dockerfile getan habe, damit es funktioniert:

FROM debian:latest 
RUN apt-get update 
RUN apt-get install -y locales locales-all 
ENV LC_ALL en_US.UTF-8 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US.UTF-8 
0

Für mich wirklich nützlich war Vorschlag von @ user2915097

RUN apt-get -qq update && apt-get -qqy install locales 
RUN sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ 
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    locale-gen && \ 
    update-locale LANG=ru_RU.UTF-8 && \ 
    echo "LANGUAGE=ru_RU.UTF-8" >> /etc/default/locale && \ 
    echo "LC_ALL=ru_RU.UTF-8" >> /etc/default/locale 
1

Ich mag nicht Variablen Docker Umgebung haben, wenn ich tun erwarte nicht, dass Benutzer eines Docker-Images sie ändern. Ich denke, die folgende ist viel sauberer:

echo "LC_ALL=en_US.UTF-8" >> /etc/environment 

(Edit:. Das funktioniert nicht, es scheint, dass ich es schlecht zunächst getestet.)

es einfach irgendwo RUN in einem setzen.Wenn Sie nicht UTF-8-Locales erzeugt haben, dann können Sie den folgenden Satz von Befehlen tun:

export DEBIAN_FRONTEND=noninteractive 
apt-get update -q -q 
apt-get install --yes locales 
locale-gen --no-purge en_US.UTF-8 
update-locale LANG=en_US.UTF-8 
echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | debconf-set-selections 
echo locales locales/default_environment_locale select en_US.UTF-8 | debconf-set-selections 
dpkg-reconfigure locales 
Verwandte Themen