如何在Docker Ubuntu 14.04容器中将区域设置配置为Unicode?


30

我使用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=

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

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

# cat /etc/default/locale 
LANG=en_US.UTF-8

但是即使离开容器并返回后,语言环境仍然设置不正确。

我也尝试使用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=

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

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=

如何在Docker容器中添加相同的内容?

提前致谢!

Answers:


19

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

FROM ubuntu:trusty
ENV LANG en_US.UTF-8
CMD ["/bin/bash"]

1
有效!也感谢您对PAM的解释。最后,我只需要重新构建图像(使用sudo docker build .),它就可以正常工作。
Pierre

53

我在我的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

也可以使用ENV单线:

RUN locale-gen en_US.UTF-8
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'

2
这是正确的答案。locale -a显示该语言环境已从基本映像中完全删除。locale-gen再次生成并使其可用。
安倍·佛尔克

这是dockerfile哪里 可以为下载的图像进行编辑吗?
Mikhail Batcer '16

您可以Dockerfile在项目目录中创建一个@MikhailBatcer,并使用FROM指令扩展现有图像。然后,只需添加提到的行即可。在Dockerfile 此处
czerasz

3
我收到以下错误:locale-gen: not found。解决方案:stackoverflow.com/a/39761477/1743367
JustAC0der '17

7

尝试

ENV LANG C.UTF-8

如果unsupported locale setting出现错误,并且不想安装任何新的语言环境。


您也可以避免一次运行就重建图像: docker-compose run --rm -e TERM=xterm -e LANG=C.UTF-8 worker bash
cmoran92 '17

1

我尝试了这个,Dockerfile添加了我的图片后,它对我有帮助

ENV LANG='en_GB.UTF-8' LANGUAGE='en_GB:en' LC_ALL='en_GB.UTF-8'
RUN echo en_GB.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen

并运行

docker-compose build
docker-compose up -d
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.