Skip to main content

Docker时区设置

· 2 min read
不才老黄

下面介绍几个常用基础镜像(Alpine,Ubuntu,Debian 和 CentOS)如何设置时区。

CentOS, Deian

CentOS 和 Deian 内置了时区数据库 tzdata (时区数据位于 /usr/share/timezone),支持直接通过环境变量(-e TZ=Asia/Shanghai)设置容器时区:

docker run -e TZ=Asia/Shanghai --rm -it centos:8 date
docker run -e TZ=Asia/Shanghai --rm -it debian:9.13 date

或者通过Dockerfile自定环境变量:

Dockerfile
FROM debian:9.13

ENV TZ=Asia/Shanghai

# 其他指令...

Alpine, Ubuntu

alpine 和 Ubuntu 需要安装时区数据之后指定时区, 以下以 alpine 为例介绍:

写一个 Dockerfile:

Dockerfile.alpine
FROM alpine:3.13

# 添加阿里云镜像, 加快包安装速度
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 开始安装时区数据
RUN apk add tzdata

然后开始构建: docker build -t alpine:3.13-tz -f Dockerfile.alpine .

现在就可以使用刚才构建的镜像alpine:3.13-tz, 指定容器时区了:

docker run -e TZ=Asia/Shanghai --rm -it alpine:3.13-tz date # 输出容器时间
docker run -e TZ=Asia/Shanghai --rm -it alpine:3.13-tz ls /usr/share/zoneinfo # 输出时区信息

引用 聊一聊Docker与时区