tutorial microsoft aks docker ubuntu debian

docker - microsoft - azure kubernetes tutorial



¿Cómo configurar la configuración regional dentro de un contenedor Docker de Debian/Ubuntu? (10)

Estoy ejecutando un contenedor Ubuntu Docker. Tengo un teclado noruego y necesito usar caracteres noruegos (øæå).

La codificación de caracteres de mi Terminal está configurada en UTF-8 y estoy conectado a mi contenedor mediante SSH. Sin embargo, no puedo escribir caracteres noruegos, ni copiar y pegar caracteres noruegos, ni usar CTL + SHIFT + U + 00f8.

Lo intenté:

locale-gen nb_NO.UTF-8

Pero nada ha cambiado. ¿Cómo configuro la configuración regional y el teclado dentro de un contenedor Docker?


Aquellos que usan Debian también tienen que instalar el paquete locales .

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

Esta answer me ayudó mucho.


Consejo: explore los foros de documentación de contenedores, como el foro Docker .

Aquí hay una solución para debian y ubuntu , agregue lo siguiente a su Dockerfile:

RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* / && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.utf8


De hecho, sufrí el mismo problema, pero ninguna de las respuestas proporcionadas funciona al 100% con Debian: lo último, incluso si proporcionan buenas pistas.

La mayor diferencia es que debe asegurarse de que tanto las configuraciones regionales como las locales estén instaladas, esta última ya contiene en_US.UTF-8, por lo que no tiene que generarla con local-gen o dpkg-reconfigure .

Esto es lo que he hecho en mi Dockerfile para que funcione:

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


En lugar de restablecer la configuración regional después de la instalación del paquete de configuraciones regionales, puede responder las preguntas que normalmente se le formularían (que está inhabilitado por la noninteractive de noninteractive ) antes de instalar el paquete para que los scripts del paquete configuren la configuración regional correctamente, este ejemplo establece la configuración regional en inglés (Británico, UTF-8):

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


Especifique las variables de entorno LANG y LC_ALL usando -e cuando ejecute su comando:

docker run -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -it --rm <yourimage> <yourcommand>

No es necesario modificar el Dockerfile.


La answer @ Mixel funcionó muy bien para la imagen de acoplador basada en Ubuntu que tenemos.

Sin embargo, también tenemos una imagen de acoplador basada en centos para probar recetas a través del chef (utilizando el controlador de kitchen-docker ). Uno de los paquetes que preinstalamos no se pudo instalar debido a que no se configuró la configuración regional. Para instalar una configuración regional, tuve que ejecutar lo siguiente:

localedef -c -f UTF-8 -i en_US en_US.UTF-8 export LC_ALL=en_US.UTF-8

Obtuve esta información de esta respuesta en ServerFault .

Después de ejecutar los comandos anteriores como parte de la ventana acoplable aprovisionando el paquete instalado sin ningún error. De .kitchen.yml :

platforms: - name: centos7 driver_config: image: #(private image) platform: centos provision_command: - localedef -c -f UTF-8 -i en_US en_US.UTF-8 - export LC_ALL=en_US.UTF-8


No me gusta tener variables de entorno de Docker cuando no espero que el usuario de una imagen de Docker las cambie.

Simplemente colóquelo en algún lugar de una RUN . Si no tiene las configuraciones regionales UTF-8 generadas, puede hacer el siguiente conjunto de comandos:

RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* / && locale-gen "en_US.UTF-8" ENV LANG=en_US.UTF-8 / LANGUAGE=en_US:en / LC_ALL=en_US.UTF-8


Ponga en su Dockerfile algo adaptado de

# 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

esto se extrae de la muy buena publicación sobre ese tema, de

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


Solo agrega

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

en tu Dockerfile. No se necesita nada más para la operación básica. Mientras tanto, locale-gen no acepta ningún argumento, es por eso que ninguna de las ''soluciones'' que lo usan funcionan.


Ustedes no necesitan esas cosas complejas para establecer configuraciones regionales en Ubuntu / Debian. Ni siquiera necesita el archivo /etc/local.gen .

Simplemente locale-gen hará todo y el autor solo se perdió el paquete de locales .

RUN echo locales locales/default_environment_locale select en_GB.UTF-8 | debconf-set-selections RUN echo locales locales/locales_to_be_generated select "en_GB.UTF-8 UTF-8" | debconf-set-selections RUN / apt-get update && / DEBIAN_FRONTEND=noninteractive apt-get install -y locales && / rm -rf /var/lib/apt/lists/*

Esto me pareció el más simple y efectivo. Confirmo que funciona en Ubuntu 16.04.