解决Docker容器内时区不一致问题

1、Dockerfile中创建时区文件

CentOS

FROM centos
ENV TZ=Asia/Shanghai
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo "${TZ}" > /etc/timezone

Alpine

FROM alpine
ENV TZ=Asia/Shanghai
RUN apk add --no-cache tzdata \
	&& echo "${TZ}" > /etc/timezone \
	&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
	&& apk del tzdata \
	# 可选,上面已指定no-cache
	&& rm -rf /var/cache/apk/*

ubuntu

FROM ubuntu
ENV TZ=Asia/Shanghai 
RUN echo "${TZ}" > /etc/timezone \ 
    && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \ 
    && apt-get update \ 
    && apt-get install -y tzdata \ 
    && rm -rf /var/lib/apt/lists/*

2、运行容器时挂载主机时区

方式1

挂载本地 /etc/localtime 到容器内:

docker run -it -v /etc/localtime:/etc/localtime centos /bin/sh

方式2

挂载本地 /usr/share/zoneinfo/Asia/Shanghai 到容器内

docker run -it -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime centos /bin/sh
posted @   gaozejie  阅读(336)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示