在Docker容器中设置区域设置

时间:2019-04-10 10:42:29

标签: docker docker-container

我的容器的语言环境已设置为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

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

已经在容器Entrypoint中尝试了此代码,但是导出没有任何作用。

2 个答案:

答案 0 :(得分:0)

这些设置受外壳会话约束,而不受操作系统约束。要使其与操作系统绑定,应将其写入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  

答案 1 :(得分:0)

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

您可以为此目的使用“ docker commit”。

docker commit

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