在docker容器中设置区域设置

问题描述 投票:1回答:2

我的容器有locale settep到POSIX,我想改变它。在我这样做之后,我退出并重新进入容器,并且语言环境又回到了POSIX。我不想构建新映像或运行新容器,因为我们在多台机器中有很多容器。

运行这个:

DEBIAN_FRONTEND=noninteractive apt-get install -y locales
sed -i -e 's/# pt_PT ISO-8859-1/pt_PT ISO-8859-1/' /etc/locale.gen
dpkg-reconfigure --frontend=noninteractive locales
export LANGUAGE=pt_PT
export LANG=pt_PT
export LC_ALL=pt_PT

在运行容器时效果很好但是退出并重新进入容器会使更改丢失。

已在容器入口点中尝试此代码,但导出没有任何影响。

docker docker-container
2个回答
0
投票

这些设置是shell会话绑定的,而不是OS绑定的。要使其受操作系统限制,您应该将其写入操作系统文件,但是当服务重新启动时,它将应用图像而不进行这些更改。

因此,必须在Dockerfile中设置,以便进行图像绑定,例如:

RUN DEBIAN_FRONTEND=noninteractive apt-get install -y locales && \
    sed -i -e 's/# pt_PT ISO-8859-1/pt_PT ISO-8859-1/' /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales
ENV LANG pt_PT  
ENV LANGUAGE pt_PT  
ENV LC_ALL pt_PT  

0
投票

更改无法存储在容器中。我认为最好的方法是将更改提交到容器中并创建一个新的容器。

您可以使用“docker commit”来实现此目的。

docker commit

参考:https://docs.docker.com/engine/reference/commandline/commit/

© www.soinside.com 2019 - 2024. All rights reserved.