主页

索引

模块索引

搜索页面

时区

运行 Docker 容器时调整时区

通用 docker 时区修改方案:

-v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro

示例:
docker run --name test --rm -ti -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro alpine /bin/sh

通过传递环境变量改变容器时区:

适用于基于 Debian 基础镜像,CentOS 基础镜像 制作的 Docker 镜像
不适用于基于 Alpine 基础镜像,Ubuntu 基础镜像 制作的 Docker 镜像
成立的前提条件是已经安装tzdata软件包

$ docker run --name test -e TZ=Asia/Shanghai --rm -ti debian /bin/bash

制作 Docker 镜像时调整时区

Alpine:

ENV TZ Asia/Shanghai

RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && apk del tzdata

Debian(Debian 基础镜像 中已经安装了 tzdata 包):

ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata \
    && rm -rf /var/lib/apt/lists/*

Ubuntu(基础镜像中没有安装了 tzdata 包,因此我们需要先安装 tzdata 包):

ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN apt update \
    && apt install -y tzdata \
    && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone \
    && dpkg-reconfigure --frontend noninteractive tzdata \
    && rm -rf /var/lib/apt/lists/*

CentOS(CentOS 基础镜像 中已经安装了 tzdata 包):

ENV TZ Asia/Shanghai

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone

主页

索引

模块索引

搜索页面