如何设置Docker容器内的区域设置?

我正在运行一个Ubuntu的Docker容器。 我有一个挪威的键盘,需要使用挪威的字符(øæå)。

我的terminal字符编码设置为UTF-8,并使用SSH连接到我的容器。 但是,我无法input挪威语字符,也不能复制和粘贴挪威语字符,也不能使用CTL + SHIFT + U + 00f8。

我试过了:

locale-gen nb_NO.UTF-8 

但没有任何改变。 如何在Docker容器中设置语言环境和键盘?

把你的Dockerfile改写一下

 # 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 

这是从这个主题的非常好的post中提取出来的

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

那些使用Debian的人也必须安装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 

这个答案帮了我很多。

只需添加

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

到你的Dockerfile中。 基本操作不需要其他任何东西。 同时, locale-gen不接受任何参数,这就是为什么没有使用它的“修复”工作。

我碰巧遇到了同样的问题,但是提供的答案没有100%与debian合作:最新的,即使它们提供了很好的提示。

最大的区别是你应该确保locale locales都已经安装,后者已经包含了en_US.UTF-8,所以你不必用local-gen或者dpkg-reconfigure生成它。

以下是我在Dockerfile中完成的工作:

 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 

我不喜欢Docker环境variables,当我不希望Docker镜像的用户改变他们。 我认为以下更清洁:

 echo "LC_ALL=en_US.UTF-8" >> /etc/environment 

(编辑:这不起作用,似乎我最初testing的不好。)

只要把它放在一个RUN地方。 如果您没有生成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 

对我来说真正有用的是@ user2915097的build议

 RUN apt-get -qq update && apt-get -qqy install locales RUN sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ locale-gen && \ update-locale LANG=ru_RU.UTF-8 && \ echo "LANGUAGE=ru_RU.UTF-8" >> /etc/default/locale && \ echo "LC_ALL=ru_RU.UTF-8" >> /etc/default/locale