Docker 容器時區問題

1.問題

kubectl exec -it podName -n namespace /bin/sh

進入容器運行 date 命令,發現時區不對是 UTC 時區,造成公司日誌系統無法採集日誌,需要改爲 UTC+8 北京時間。

2.解決

需要更改 Dockerfile,在 build image 時修改時區.

FROM alpine:3.11.6

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

ENV TZ=Asia/Shanghai
RUN apk update \
    && apk add tzdata \
    && echo "${TZ}" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
    && rm /var/cache/apk/*

...

我的基礎鏡像是 alpine ,可以使用以上的設置。

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 表示使用阿里鏡像包源,可以使安裝 tzdata 加速,不然很慢。

3.其他系統

基於 Debian

直接設置環境變量即可,默認安裝了 tzdata

ENV TZ=Asia/Shanghai

基於 Ubuntu

FROM ubuntu:bionic
 
ENV TZ=Asia/Shanghai
 
RUN echo "${TZ}" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
    && apt update \
    && apt install -y tzdata \
    && rm -rf /var/lib/apt/lists/*
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章