前言
在使用Docker
时,其默认时区并非使用者所在时区,需要进行修改。对于单个容器,当前修改有几种常见方式,比如直接映射宿主机时区到容器内,而本文介绍的为使用Dockerfile
来直接修改镜像时区。此处仅以常见几个基础容器为例来介绍。
常见容器
Alpine
1
2
3
4
5
6
7
|
FROM alpine:latest
# 安装tzdata
RUN apk add --no-cache tzdata
# 设置时区
ENV TZ="Asia/Shanghai"
|
1
2
|
docker build -t alpine:time .
docker run --rm -it alpine:time date
|
Ubuntu
1
2
3
4
5
6
7
8
9
10
|
FROM ubuntu
# 设置localtime
# 此处需要优先设置localtime,否则安装tzdata将会进入时区选择
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 安装tzdata
RUN apt-get update \
&& apt-get install tzdata -y \
&& apt-get clean
|
1
2
|
docker build -t ubuntu:time .
docker run --rm -it ubuntu:time date
|
Debian
- Debian中已经安装了
tzdata
,所以跟Ubuntu
有所不通过
1
2
3
4
5
6
7
8
9
10
11
|
FROM debian
# 修改设置dpkg为自动配置
ENV DEBIAN_FRONTEND=noninteractive
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN dpkg-reconfigure -f noninteractive tzdata
# 修改设置dpkg为手动输入选择操作
ENV DEBIAN_FRONTEND=dialog
|
1
2
|
docker build -t debian:time .
docker run --rm -it debian:time date
|
结语
此处不再列举太多,主要解决方式为安装tzdata
,然后修改时区。