Saya menjalankan container Docker Ubuntu. Saya memiliki keyboard Norsk dan perlu menggunakan karakter Norsk (øæå).
Enkode karakter Terminal saya disetel ke UTF-8 dan saya terhubung ke penampung saya menggunakan SSH. Namun, saya tidak dapat mengetik karakter Norsk, atau menyalin dan menempelkan karakter Norsk, atau menggunakan CTL + SHIFT + U + 00f8.
Saya mencoba:
locale-gen nb_NO.UTF-8
tapi tidak ada yang berubah. Bagaimana cara mengatur lokal dan keyboard di dalam container Docker?
apt-get -y install locales
saat menggunakan UbuntuRUN touch /usr/share/locale/locale.alias
sebelum panggilan kelocale-gen
untuk menghindari file fatal tidak ditemukan kesalahansed
Script adalah jenis canggung. Cobalahs/# \(en_US\.UTF-8 .*\)/\1/
untuk menghindari pengulangan frase pencarian dalam string pengganti dengan menangkapnya.ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US \ LC_ALL=en_US.UTF-8
Mereka yang menggunakan Debian juga harus menginstal
locales
paket.Jawaban ini sangat membantu saya.
sumber
Tambahkan saja
ke Dockerfile Anda. (Anda mungkin perlu memastikan
locales
paket telah diinstal.) Tidak ada lagi yang diperlukan untuk operasi dasar. Sementara itu, di luar Ubuntu,locale-gen
tidak menerima argumen apa pun, itulah mengapa tidak ada 'perbaikan' yang menggunakannya, misalnya di Debian. Ubuntu telah menamballocale-gen
untuk menerima daftar lokal yang akan dibuat tetapi tambalan tersebut saat ini belum diterima di Debian di mana pun.sumber
C.UTF-8
tersedia pada semua sistem tanpa perlu menginstal apapun, dan harus sebagian besar cukup.locales
.docker run
perintah args sebagai gantinya: stackoverflow.com/questions/28405902/…apt-get install -y locales
Saya sebenarnya mengalami masalah yang sama, tetapi tidak ada jawaban yang diberikan 100% berfungsi dengan debian: terbaru, meskipun memberikan petunjuk yang baik.
Perbedaan terbesarnya adalah Anda harus memastikan baik locales dan locales-all sudah diinstal, yang terakhir sudah berisi en_US.UTF-8, jadi Anda tidak perlu membuatnya dengan local-gen atau dpkg-reconfigure .
Inilah yang telah saya lakukan di Dockerfile saya untuk membuatnya berfungsi:
sumber
apt-cache show locales-all
? Ini pasti masih paket resmi dan tersedia di Debian.Tentukan variabel
LANG
danLC_ALL
lingkungan yang digunakan-e
saat menjalankan perintah Anda:Tidak perlu memodifikasi Dockerfile.
sumber
-e
argumen bekerja dengan buruh pelabuhan-compose juga, by the way.C.UTF-8
lokal. Mereka biasanya tidak menyertakan bahasa lokal tertentu (misalnyaen_US.UTF-8
). Untuk itu Anda perlu menginstallocales-all
(besar) atau menginstallocales
dan menjalankanlocale-gen
setelah berakhir/etc/locale.gen
.Tip: Jelajahi forum dokumentasi container, seperti Docker Forum .
Berikut solusi untuk debian & ubuntu , tambahkan yang berikut ini ke Dockerfile Anda:
sumber
Kalian tidak memerlukan hal-hal rumit itu untuk mengatur lokal di Ubuntu / Debian. Anda bahkan tidak membutuhkan
/etc/local.gen
file.Cukup
locale-gen
akan melakukan segalanya dan penulis hanya melewatkanlocales
paket.Menurut saya ini yang paling sederhana dan paling efektif. Saya mengonfirmasi itu berfungsi di Ubuntu 16.04.
sumber
@ Mixel ini jawaban bekerja besar bagi citra buruh pelabuhan berbasis Ubuntu yang kita miliki.
Namun, kami juga memiliki gambar buruh pelabuhan berbasis centos untuk menguji resep melalui chef (menggunakan
kitchen-docker
sopir). Salah satu paket yang kami pasang sebelumnya gagal dipasang karena tidak ada lokal yang disetel. Untuk menginstal lokal, saya harus menjalankan yang berikut ini:Saya mendapat informasi ini dari jawaban ini di ServerFault .
Setelah menjalankan perintah di atas sebagai bagian dari docker yang menyediakan paket yang diinstal tanpa kesalahan apa pun. Dari
.kitchen.yml
:sumber
Saya tidak suka memiliki variabel lingkungan Docker ketika saya tidak mengharapkan pengguna image Docker untuk mengubahnya.
Taruh saja di suatu tempat
RUN
. Jika Anda tidak membuat lokal UTF-8, Anda dapat melakukan serangkaian perintah berikut:sumber
locale
keluaran tidak berubah saat menjalankan perintah berikutnya, atau saat menjalankanRUN
blok berikutnya , atau saat membuat gambar lain menggunakan gambar saat ini sebagai basis. Mungkin beberapa tindakan tambahan diperlukan untuk benar-benar menerapkan perubahan ini?ENV
seperti DockerENV LC_ALL=en_US.UTF-8
.Daripada mengatur ulang lokal setelah instalasi paket locales, Anda dapat menjawab pertanyaan yang biasanya ditanyakan (yang dinonaktifkan oleh
noninteractive
) sebelum menginstal paket sehingga skrip paket mengatur lokal dengan benar, contoh ini mengatur lokal ke bahasa Inggris ( Inggris, UTF-8):sumber
Bagi saya apa yang berhasil di gambar ubuntu :
sumber
Saya menggunakan ini (setelah
RUN apt-get install -y python3
):Dan itu mencetak
UTF8 works nice! 👌
dengan benar.sumber