下面介绍几个常用基础镜像(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 # 输出时区信息