Ich verwende einen Ubuntu Docker-Container. Ich habe eine norwegische Tastatur und muss norwegische Zeichen (øæå) verwenden.
Meine Terminal-Zeichencodierung ist auf UTF-8 eingestellt und ich bin über SSH mit meinem Container verbunden. Ich kann jedoch keine norwegischen Zeichen eingeben, keine norwegischen Zeichen kopieren und einfügen oder CTL + UMSCHALT + U + 00f8 verwenden.
Ich habe es versucht:
locale-gen nb_NO.UTF-8
aber nichts hat sich geändert. Wie lege ich das Gebietsschema und die Tastatur in einem Docker-Container fest?
apt-get -y install locales
bei der Verwendung von UbuntuRUN touch /usr/share/locale/locale.alias
vor dem Aufruf hinzufügenlocale-gen
, um eine schwerwiegende Datei nicht gefunden Fehler zu vermeidensed
Skript ist etwas ungeschickt. Versuchen Sies/# \(en_US\.UTF-8 .*\)/\1/
zu vermeiden , dass die Phrasensuche zu wiederholen in der Ersatzzeichenfolge durch sie einzufangen.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Diejenigen, die Debian verwenden, müssen auch das
locales
Paket installieren .Diese Antwort hat mir sehr geholfen.
quelle
Einfach hinzufügen
in Ihre Docker-Datei. (Möglicherweise müssen Sie sicherstellen, dass das
locales
Paket installiert ist.) Für die Grundoperation ist nichts anderes erforderlich. Währenddessenlocale-gen
akzeptiert Ubuntu außerhalb von Ubuntu keine Argumente. Deshalb funktioniert keine der 'Fixes', die es verwenden, zB unter Debian. Ubuntu hat gepatchtlocale-gen
, um eine Liste der zu generierenden Gebietsschemas zu akzeptieren, aber der Patch wurde im Moment in Debian nirgendwo anders akzeptiert.quelle
C.UTF-8
ist auf allen Systemen verfügbar, ohne dass etwas installiert werden muss, und es sollte größtenteils ausreichen.locales
.docker run
stattdessen die env-Variablen in den Befehlsargumenten festlegenapt-get install -y locales
Ich hatte tatsächlich das gleiche Problem, aber keine der Antworten funktioniert zu 100% mit Debian: Neueste, auch wenn sie gute Hinweise liefern.
Der größte Unterschied besteht darin, dass Sie sicherstellen sollten, dass sowohl Gebietsschemas als auch Gebietsschemas installiert sind, wobei letzteres bereits en_US.UTF-8 enthält, damit Sie es nicht mit local-gen oder dpkg- recfigure generieren müssen .
Folgendes habe ich in meiner Docker-Datei getan, damit es funktioniert:
quelle
apt-cache show locales-all
? Es ist definitiv immer noch ein offizielles Paket und in Debian verfügbar.Geben Sie die Variablen
LANG
undLC_ALL
umgebungsvariablen an,-e
wenn Sie Ihren Befehl ausführen :Es ist nicht erforderlich, die Docker-Datei zu ändern.
quelle
-e
Argumente funktionieren übrigens auch mit Docker-Compose.C.UTF-8
Gebietsschema enthalten. Sie enthalten normalerweise keine sprachspezifischen Gebietsschemas (zen_US.UTF-8
. B. ). Dafür müssen Sie nicht installierenlocales-all
(groß) oder nach dem Beenden installierenlocales
und ausführen .locale-gen
/etc/locale.gen
Tipp: Durchsuchen Sie die Container-Dokumentationsforen wie das Docker-Forum .
Hier ist eine Lösung für Debian & Ubuntu. Fügen Sie Ihrer Docker-Datei Folgendes hinzu:
quelle
Ihr braucht diese komplexen Dinge nicht, um Gebietsschemas auf Ubuntu / Debian festzulegen. Du brauchst nicht einmal
/etc/local.gen
Datei.Einfach
locale-gen
alles machen und der Autor nurlocales
Paket verpasst .Ich fand das am einfachsten und effektivsten. Ich bestätige, dass es unter Ubuntu 16.04 funktioniert.
quelle
Die Antwort von @ Mixel hat für das Ubuntu-basierte Docker-Image, das wir haben, hervorragend funktioniert.
Wir haben jedoch auch ein Centos-basiertes Docker-Image zum Testen von Rezepten über den Koch (unter Verwendung des
kitchen-docker
Treibers). Eines der Pakete, die wir vorinstalliert haben, konnte nicht installiert werden, da kein Gebietsschema festgelegt wurde. Um ein Gebietsschema zu installieren, musste ich Folgendes ausführen:Ich habe diese Informationen aus dieser Antwort auf ServerFault erhalten .
Nachdem Sie die obigen Befehle als Teil der Docker-Bereitstellung ausgeführt haben, wird das Paket fehlerfrei installiert. Von
.kitchen.yml
:quelle
Ich mag keine Docker-Umgebungsvariablen, wenn ich nicht erwarte, dass Benutzer eines Docker-Images diese ändern.
Legen Sie es einfach irgendwo in einen
RUN
. Wenn Sie keine UTF-8-Gebietsschemas generiert haben, können Sie die folgenden Befehle ausführen:quelle
locale
Die Ausgabe wird weder beim Ausführen nachfolgender Befehle noch beim Ausführen nachfolgenderRUN
Blöcke oder beim Erstellen eines anderen Images unter Verwendung des aktuellen Images als Basis geändert . Möglicherweise sind zusätzliche Maßnahmen erforderlich, um diese Änderungen tatsächlich anzuwenden?ENV
wie einstellenENV LC_ALL=en_US.UTF-8
.Anstatt das Gebietsschema nach der Installation des Gebietsschema-Pakets zurückzusetzen, können Sie die Fragen beantworten, die Ihnen normalerweise gestellt werden (was durch deaktiviert ist
noninteractive
), bevor Sie das Paket installieren, damit die Paketskripte das Gebietsschema korrekt einrichten. In diesem Beispiel wird das Gebietsschema auf Englisch gesetzt ( Britisch, UTF-8):quelle
Für mich, was in Ubuntu Image funktioniert hat :
quelle
Ich habe dies (nach
RUN apt-get install -y python3
) verwendet:Und es druckt
UTF8 works nice! 👌
richtig.quelle