当前位置: 首页>>技术教程>>正文


如何在Debian/Ubuntu Docker容器内设置语言环境?

, ,

问题描述

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

我的终端字符编码设置为UTF-8,我使用SSH连接到了我的容器。但是,我无法键入挪威字符,也无法复制和粘贴挪威字符,也无法使用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     

这是摘自该主题的优秀文章,

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 

这个answer对我有很大帮助。

第三种办法

只需添加

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

到您的Dockerfile中。基本操作不需要任何其他操作。同时,locale-gen不接受任何参数,这就是为什么使用FIX的FIX都不起作用的原因。

第四种办法

实际上,我碰巧遇到了同样的问题,但是即使提供了很好的提示,提供的答案也没有100%使用debian:latest。

最大的区别是您应该确保同时安装了语言环境和locales-all,后者已经包含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

第五种办法

在运行命令时,使用-e指定LANGLC_ALL环境变量:

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

无需修改Dockerfile。

第六种办法

提示:浏览容器文档论坛,例如Docker Forum

这是solution for debian & ubuntu,将以下内容添加到您的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.UTF-8

第七种办法

你们不需要这些复杂的事情就可以在Ubuntu /Debian上设置语言环境。您甚至不需要/etc/local.gen文件。

只需locale-gen即可完成所有操作,而作者仅错过了locales软件包。

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

我发现这是最简单,最有效的。我确认它可以在Ubuntu 16.04上运行。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9876.html,未经允许,请勿转载。