J'exécute un conteneur Ubuntu Docker. J'ai un clavier norvégien et je dois utiliser des caractères norvégiens (øæå).
Le codage de caractères de mon terminal est défini sur UTF-8 et je suis connecté à mon conteneur en utilisant SSH. Cependant, je ne peux pas taper des caractères norvégiens, ni copier et coller des caractères norvégiens, ni utiliser CTL + SHIFT + U + 00f8.
J'ai essayé:
locale-gen nb_NO.UTF-8
mais rien n'a changé. Comment définir les paramètres régionaux et le clavier dans un conteneur Docker?
apt-get -y install locales
lorsque vous utilisez UbuntuRUN touch /usr/share/locale/locale.alias
avant l'appel àlocale-gen
afin d'éviter une erreur fatale de fichier introuvablesed
script est un peu maladroit. Essayezs/# \(en_US\.UTF-8 .*\)/\1/
d'éviter de répéter la phrase de recherche dans la chaîne de remplacement en la capturant.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Ceux qui utilisent Debian doivent également installer le
locales
package.Cette réponse m'a beaucoup aidé.
la source
Il suffit d'ajouter
dans votre Dockerfile. (Vous devrez peut-être vous assurer que le
locales
package est installé.) Rien d'autre n'est nécessaire pour l'opération de base. Pendant ce temps, en dehors d'Ubuntu,locale-gen
n'accepte aucun argument, c'est pourquoi aucun des «correctifs» qui l'utilisent ne fonctionne par exemple sur Debian. Ubuntu a corrigélocale-gen
pour accepter une liste de paramètres régionaux à générer mais le correctif pour le moment n'a pas été accepté dans Debian ou ailleurs.la source
C.UTF-8
est disponible sur tous les systèmes sans la nécessité d'installer quoi que ce soit, et il devrait être la plupart du temps suffisant.locales
.docker run
commande args à la place: stackoverflow.com/questions/28405902/…apt-get install -y locales
En fait, j'ai souffert du même problème, mais aucune des réponses fournies ne fonctionne à 100% avec debian: latest, même si elles fournissent de bons indices.
La plus grande différence est que vous devez vous assurer que les locales et locales-all sont installées, ces dernières contenant déjà en_US.UTF-8, vous n'avez donc pas à le générer avec local-gen ou dpkg-reconfigure .
Voici ce que j'ai fait dans mon Dockerfile pour le faire fonctionner:
la source
apt-cache show locales-all
? C'est définitivement un paquet officiel et disponible dans Debian.Spécifiez les variables d'environnement
LANG
etLC_ALL
à l'aide de-e
lors de l'exécution de votre commande:Il n'est pas nécessaire de modifier le Dockerfile.
la source
-e
arguments fonctionnent aussi avec docker-compose, d'ailleurs.C.UTF-8
paramètres régionaux. Ils n'incluent généralement pas les paramètres régionaux spécifiques à une langue (par exempleen_US.UTF-8
). Pour cela, vous devez installerlocales-all
(gros) ou installerlocales
et exécuterlocale-gen
après la fin/etc/locale.gen
.Conseil: parcourez les forums de documentation sur les conteneurs, comme le Forum Docker .
Voici une solution pour debian et ubuntu , ajoutez ce qui suit à votre Dockerfile:
la source
Vous n'avez pas besoin de ces choses complexes pour définir les paramètres régionaux sur Ubuntu / Debian. Tu n'as même pas besoin
/etc/local.gen
fichier.Tout simplement
locale-gen
fera tout et l'auteur n'a manqué que lelocales
paquet.J'ai trouvé cela le plus simple et le plus efficace. Je confirme que cela fonctionne sur Ubuntu 16.04.
la source
Réponse de @ Mixel a très bien fonctionné pour l'image de docker basée sur Ubuntu que nous avons.
Cependant, nous avons également une image docker basée sur centos pour tester des recettes via chef (en utilisant le
kitchen-docker
pilote). L'un des packages que nous préinstallons n'a pas pu être installé en raison de l'absence de paramètres régionaux. Afin d'obtenir une locale installée, j'ai dû exécuter ce qui suit:J'ai obtenu cette information de cette réponse sur ServerFault .
Après avoir exécuté les commandes ci-dessus dans le cadre du provisionnement du docker, le package est installé sans aucune erreur. De
.kitchen.yml
:la source
Je n'aime pas avoir des variables d'environnement Docker lorsque je ne m'attends pas à ce que l'utilisateur d'une image Docker les modifie.
Mettez-le quelque part dans un
RUN
. Si vous n'avez pas généré de paramètres régionaux UTF-8, vous pouvez exécuter l'ensemble de commandes suivant:la source
locale
la sortie n'est pas modifiée lors de l'exécution des commandes suivantes, ni lors de l'exécution desRUN
blocs suivants , ni lors de la construction d'une autre image en utilisant l'image courante comme base. Peut-être qu'une action supplémentaire est nécessaire pour appliquer réellement ces changements?ENV
commeENV LC_ALL=en_US.UTF-8
.Plutôt que de réinitialiser les paramètres régionaux après l'installation du package locales, vous pouvez répondre aux questions qui vous seraient normalement posées (ce qui est désactivé par
noninteractive
) avant d'installer le package afin que les scripts du package configurent correctement les paramètres régionaux, cet exemple définit les paramètres régionaux sur anglais ( Britannique, UTF-8):la source
Pour moi, ce qui a fonctionné dans l' image ubuntu :
la source
J'ai utilisé ceci (après
RUN apt-get install -y python3
):Et il s'imprime
UTF8 works nice! 👌
correctement.la source