Estou executando um contêiner do Ubuntu Docker. Tenho um teclado norueguês e preciso usar caracteres noruegueses (øæå).
Minha codificação de caracteres do Terminal está definida como UTF-8 e estou conectado ao meu contêiner usando SSH. No entanto, não consigo digitar caracteres noruegueses, nem copiar e colar caracteres noruegueses, nem usar CTL + SHIFT + U + 00f8.
Eu tentei:
locale-gen nb_NO.UTF-8
mas nada mudou. Como faço para definir a localidade e o teclado dentro de um contêiner do Docker?
apt-get -y install locales
usar o UbuntuRUN touch /usr/share/locale/locale.alias
antes da chamada paralocale-gen
para evitar um erro fatal de arquivo não encontradosed
roteiro é meio desajeitado. Tentes/# \(en_US\.UTF-8 .*\)/\1/
evitar repetir a frase de pesquisa na string de substituição, capturando-a.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Quem usa o Debian também precisa instalar o
locales
pacote.Essa resposta me ajudou muito.
fonte
Basta adicionar
em seu Dockerfile. (Você pode precisar ter certeza de que o
locales
pacote está instalado.) Nada mais é necessário para a operação básica. Enquanto isso, fora do Ubuntu,locale-gen
não aceita nenhum argumento, é por isso que nenhuma das 'correções' de uso funciona, por exemplo, no Debian. O Ubuntu aplicoulocale-gen
um patch para aceitar uma lista de localidades a serem geradas, mas o patch no momento não foi aceito no Debian de nenhum outro lugar.fonte
C.UTF-8
está disponível em todos os sistemas sem a necessidade de instalar nada, e deve ser principalmente o suficiente.locales
.docker run
comando args: stackoverflow.com/questions/28405902/…apt-get install -y locales
Na verdade, aconteceu de eu ter sofrido do mesmo problema, mas nenhuma das respostas fornecidas está 100% funcionando com debian: latest, mesmo que elas forneçam boas dicas.
A maior diferença é que você deve se certificar de que locales e locales-all estão instalados, o último já contendo en_US.UTF-8, para que você não precise gerá-lo com local-gen ou dpkg-reconfigure .
Aqui está o que fiz em meu Dockerfile para que funcione:
fonte
apt-cache show locales-all
? Definitivamente, ainda é um pacote oficial e disponível no Debian.Especifique as variáveis de ambiente
LANG
eLC_ALL
usando-e
ao executar seu comando:Não é necessário modificar o Dockerfile.
fonte
-e
argumentos funcionam com docker-compose também, a propósito.C.UTF-8
local. Eles geralmente não incluem localidades específicas do idioma (por exemploen_US.UTF-8
). Para isso você precisa instalarlocales-all
(grande) ou instalarlocales
e executarlocale-gen
após terminar/etc/locale.gen
.Dica: Navegue pelos fóruns de documentação do contêiner, como o Docker Forum .
Esta é uma solução para debian e ubuntu , adicione o seguinte ao seu Dockerfile:
fonte
Vocês não precisam dessas coisas complexas para definir localidades no Ubuntu / Debian. Você nem precisa do
/etc/local.gen
arquivo.Simplesmente
locale-gen
fará tudo e o autor só faltou olocales
pacoteAchei isso o mais simples e eficaz. Confirmo que funciona no Ubuntu 16.04.
fonte
@A resposta do Mixel funcionou muito bem para a imagem docker baseada no Ubuntu que temos.
No entanto, também temos uma imagem docker baseada em centos para testar receitas via chef (usando o
kitchen-docker
driver). Um dos pacotes que pré-instalamos estava falhando ao instalar devido a nenhum local definido. Para instalar uma localidade, tive que executar o seguinte:Consegui essa informação com esta resposta no ServerFault .
Depois de executar os comandos acima como parte do provisionamento do docker, o pacote foi instalado sem erros. De
.kitchen.yml
:fonte
Não gosto de ter variáveis de ambiente Docker quando não espero que o usuário de uma imagem Docker as altere.
Basta colocá-lo em algum lugar em um
RUN
. Se você não tiver localidades UTF-8 geradas, poderá executar o seguinte conjunto de comandos:fonte
locale
a saída não é alterada ao executar comandos subsequentes, nem ao executarRUN
blocos subsequentes , nem ao construir outra imagem usando a imagem atual como base. Talvez alguma ação adicional seja necessária para realmente aplicar essas alterações?ENV
como o DockerENV LC_ALL=en_US.UTF-8
.Em vez de redefinir o local após a instalação do pacote locales, você pode responder às perguntas que normalmente seriam feitas (que é desabilitado por
noninteractive
) antes de instalar o pacote para que os scripts do pacote configurem o locale corretamente, este exemplo define o local para inglês ( Britânico, UTF-8):fonte
Para mim, o que funcionou na imagem do ubuntu :
fonte
Eu usei isto (depois
RUN apt-get install -y python3
):E imprime
UTF8 works nice! 👌
corretamente.fonte