在 docker 容器内设置语言环境

Setting locale inside 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

在 运行ning 容器中运行良好,但退出并重新进入容器会使更改丢失。

已经在容器 Entrypoint 中尝试过此代码,但导出没有任何效果。

这些设置是 shell 会话绑定的,而不是 OS 绑定的。要使其绑定 OS,您应该将其写入 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  

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

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

docker 提交

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