Docker修改默认时区

  1. 一、缘由:
  2. 二、解决办法:
    1. 1、环境变量方式:
    2. 2、重新制作镜像方式:
  3. 三、注意事项
    1. 1、其他办法:
  4. 2、特殊镜像alpine

一、缘由:

Docker Hub中的镜像默认都是0时区,而我们在东八区,差8小时,会导致我们看日志不能准确定位时间,这是很要命的。

二、解决办法:

1、环境变量方式:

  1. docker run 启动时加入环境变量:docker run -e "TZ=Asia/Shanghai"

  2. docker-compose 方式启动时,加入

    environment:
     - TZ=Asia/Shanghai
    

    2、重新制作镜像方式:

如果你是基于某个官方Image来制作自己的镜像,比如Alpine。那么你可以在Dockerfile中,加入:

RUN apk --no-cache add tzdata  && \
  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
  echo "Asia/Shanghai" > /etc/timezone

三、注意事项

1、其他办法:

  • Dockerfile中加入时区ENV TZ=Asia/Shanghai,有可能不会改变系统时区,具体看镜像操作系统。

  • K8s的deployment等yaml中加入env环境变量可以作用于容器运行时,可以改变系统时区,相当于docker run -e

    spec:
      containers:
      - name: nginx
        image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx 
        ports:
        - containerPort: 80
        env:
        - name: TZ
          value: "Asia/Shanghai"

2、特殊镜像alpine

使用 alpine 镜像时,直接设置 TZ 环境变量通常不会生效。这是因为 alpine 镜像默认不包含时区数据库(tzdata),并且其 glibc 也不支持使用 TZ 环境变量进行时区设置。为了在 alpine 镜像中设置时区,可以采取以下方法:

FROM alpine:3.13

# 安装 tzdata
RUN apk add --no-cache tzdata

# 设置时区环境变量
ENV TZ=Asia/Shanghai

# 验证时区设置
RUN date

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com

×

喜欢就点赞,疼爱就打赏