配置Ubuntu容器镜像的时区和语言

配置Ubuntu容器镜像的时区和语言

编写 Dockerfile,指定时区和语言。

  使用容器一段时间后我发现容器默认使用英语,0 时区。这样使用起来不太方便,因此这里记录我配置时区和语言的方法。

Dockerfile 内容:

FROM ubuntu

USER root

RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y locales tzdata && \
    DEBIAN_FRONTEND=noninteractive apt-get autoremove -y && apt-get clean && \
    rm /var/lib/apt/lists/* -r && \
    sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen && \
     locale-gen  &&\
     ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
     dpkg-reconfigure -f noninteractive tzdata

ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8

ENTRYPOINT [ "/bin/bash" ]

配置语言

  参考 Microsoft JDK 的文档为容器配置语言。第 6 行下载 locales,第 9、10、13~15 行配置中文语言。

配置时区

  参考《Set timezone in your docker image》配置容器的时区。这里采用链接时区文件方式配置时区。第 6 行下载 tzdata,第 11、12 行链接时区文件。

精简容器层

  每一个 RUN 指令会创建一个新的容器层。为了避免创建太多层,我把所有的 Shell 指令放在一个 RUN 指令中。第 7、8 行清理了 apt-get 产生的垃圾文件。13~15 行配置的环境变量会在最终运行的容器中生效。

修订记录

2022-05-07T14:51:14+08:00