Używam kontenera Ubuntu Docker. Mam klawiaturę norweską i muszę używać norweskich znaków (øæå).
Kodowanie znaków mojego terminala jest ustawione na UTF-8 i jestem połączony z kontenerem przy użyciu protokołu SSH. Nie mogę jednak wpisywać norweskich znaków, kopiować i wklejać norweskich znaków ani używać CTL + SHIFT + U + 00f8.
Próbowałem:
locale-gen nb_NO.UTF-8
ale nic się nie zmieniło. Jak ustawić ustawienia regionalne i klawiaturę w kontenerze Docker?
apt-get -y install locales
korzystając z UbuntuRUN touch /usr/share/locale/locale.alias
przed wezwaniemlocale-gen
, aby uniknąć fatalnego błędu nie znaleziono plikused
Skrypt jest trochę niezdarny. Starajs/# \(en_US\.UTF-8 .*\)/\1/
się unikać powtarzania frazy wyszukiwania w ciągu zastępczym, przechwytując ją.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Ci, którzy używają Debiana, również muszą zainstalować
locales
pakiet.Ta odpowiedź bardzo mi pomogła.
źródło
Poprostu dodaj
do pliku Dockerfile. (Może być konieczne upewnienie się, że
locales
pakiet jest zainstalowany). Nic więcej nie jest potrzebne do podstawowej operacji. Tymczasem poza Ubuntulocale-gen
nie przyjmuje żadnych argumentów, dlatego żadna z „poprawek” go używających nie działa np. Na Debianie. Ubuntu załatało,locale-gen
aby zaakceptować listę lokalizacji do wygenerowania, ale w tej chwili łatka nie została zaakceptowana w Debianie nigdzie indziej.źródło
C.UTF-8
jest dostępna we wszystkich systemach bez konieczności instalowania czegokolwiek, i powinno być przede wszystkim mało.locales
.docker run
apt-get install -y locales
Tak się złożyło, że miałem ten sam problem, ale żadna z podanych odpowiedzi nie działa w 100% z debianem: najnowsze, nawet jeśli zawierają dobre wskazówki.
Największą różnicą jest to, że należy upewnić się, obie lokalizacje i locales-wszystkie są zainstalowane, to ostatnie już zawierających en_US.UTF-8, dzięki czemu nie trzeba wygenerować go z lokalnego-gen lub dpkg-reconfigure .
Oto, co zrobiłem w moim pliku Dockerfile, aby to działało:
źródło
apt-cache show locales-all
? Jest to zdecydowanie nadal oficjalny pakiet dostępny w Debianie.Określ zmienne środowiskowe
LANG
i,LC_ALL
używając-e
podczas uruchamiania polecenia:Nie ma potrzeby modyfikowania pliku Dockerfile.
źródło
-e
argumenty pracować z Docker-komponować także, przy okazji.C.UTF-8
ustawienia regionalne. Zwykle nie zawierają ustawień regionalnych (npen_US.UTF-8
.). W tym celu musisz zainstalowaćlocales-all
(duży) lub zainstalowaćlocales
i uruchomićlocale-gen
po zakończeniu/etc/locale.gen
.Wskazówka: przejrzyj fora dokumentacji kontenerów, takie jak forum Docker .
Oto rozwiązanie dla debian i ubuntu , dodaj następujące informacje do pliku Dockerfile:
źródło
Nie potrzebujecie tych skomplikowanych rzeczy, aby ustawić lokalizacje na Ubuntu / Debian. Nie potrzebujesz nawet
/etc/local.gen
pliku.Po prostu
locale-gen
zrobię wszystko, a autorowi tylko brakowałolocales
pakietu.Uważam, że to najprostsze i najskuteczniejsze. Potwierdzam, że działa na Ubuntu 16.04.
źródło
@ Mixel za odpowiedź pracował wielki dla Döcker Ubuntu opartej na obrazie mamy.
Mamy jednak również obraz dockera oparty na centos do testowania receptur za pomocą szefa kuchni (przy użyciu
kitchen-docker
sterownika). Nie udało się zainstalować jednego z wstępnie zainstalowanych pakietów z powodu braku ustawień regionalnych. Aby zainstalować locale, musiałem uruchomić:Otrzymałem tę informację z tej odpowiedzi w ServerFault .
Po uruchomieniu powyższych poleceń w ramach aprowizacji dockera pakiet instaluje się bez żadnych błędów. Od
.kitchen.yml
:źródło
Nie lubię mieć zmiennych środowiskowych Dockera, kiedy nie oczekuję, że użytkownik obrazu Dockera je zmieni.
Po prostu umieść to gdzieś w jednym
RUN
. Jeśli nie masz wygenerowanych ustawień regionalnych UTF-8, możesz wykonać następujący zestaw poleceń:źródło
locale
dane wyjściowe nie są zmieniane podczas wykonywania kolejnych poleceń ani podczas wykonywania kolejnychRUN
bloków ani podczas budowania kolejnego obrazu przy użyciu bieżącego obrazu jako podstawy. Może potrzebne są dodatkowe działania, aby faktycznie zastosować te zmiany?ENV
jakENV LC_ALL=en_US.UTF-8
.Zamiast resetować ustawienia regionalne po zainstalowaniu pakietu ustawień regionalnych, możesz odpowiedzieć na pytania, które normalnie byłyby zadawane (co jest wyłączone przez
noninteractive
) przed zainstalowaniem pakietu, aby skrypty pakietu poprawnie skonfigurowały ustawienia regionalne, ten przykład ustawia język angielski ( Brytyjski, UTF-8):źródło
Dla mnie, co działało w obrazie Ubuntu :
źródło
Użyłem tego (po
RUN apt-get install -y python3
):I drukuje
UTF8 works nice! 👌
poprawnie.źródło