如何在 Docker Ubuntu 14.04 容器中将语言环境配置为 Unicode?

Pie*_*rre 32 unicode locale 14.04 docker

我使用 Docker 安装了一个 Ubuntu Trusty 容器,当我连接到它时,我可以看到语言环境设置为最低限度:

sudo docker run -i -t <id> /bin/bash
root@<id>:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

我需要使用Unicode语言环境(例如美国英语语言环境en_US.UTF-8)。

我尝试编辑 /etc/default/locale 文件并将其放入:

# cat /etc/default/locale 
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

但是即使在离开容器并返回之后,区域设置仍然没有正确设置。

我也尝试使用该update-locale命令,但没有成功:

root@cab13a6abe4f:/# update-locale LANG=en_US.UTF-8
root@cab13a6abe4f:/# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

在我的本地配置中,我有以下配置:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

如何在我的 Docker 容器中拥有相同的内容?

提前致谢!

cze*_*asz 56

我在我的Dockerfile

# Set the locale
RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

也可以使用ENVone-liner:

RUN locale-gen en_US.UTF-8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
Run Code Online (Sandbox Code Playgroud)

  • 我收到以下错误:`locale-gen: not found`。解决方案:/sf/answers/2783303421/ (4认同)
  • 这是正确答案。`locale -a` 显示该语言环境已从基本映像中完全删除。`locale-gen` 再次生成并使其可用。 (3认同)

And*_*hen 22

/etc/default/locale文件是由PAM加载; 见/etc/pam.d/login例如。但是,在 Docker 容器中运行命令时不会调用 PAM。要配置语言环境,只需在 Dockerfile 中设置相关的环境变量。例子:

FROM ubuntu:trusty
ENV LANG en_US.UTF-8
CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)


e18*_*18r 7

尝试

ENV LANG C.UTF-8
Run Code Online (Sandbox Code Playgroud)

如果您收到unsupported locale setting错误并且不想安装任何新的语言环境。