hunter-ji / Blog

My Blog.
121 stars 38 forks source link

Docker修改时区 #16

Open hunter-ji opened 4 years ago

hunter-ji commented 4 years ago

一. 前言

在使用Docker时,其默认时区并非使用者所在时区,需要进行修改。对于单个容器,当前修改有几种常见方式,比如直接映射宿主机时区到容器内,而本文介绍的为使用Dockerfile来直接修改镜像时区。此处仅以常见几个基础容器为例来介绍。

二. 常见容器

1. Alpine

FROM alpine:latest

# 安装tzdata
RUN apk add --no-cache tzdata

# 设置时区
ENV TZ="Asia/Shanghai"
docker build -t alpine:time .
docker run --rm -it alpine:time date

2. Ubuntu

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
docker build -t ubuntu:time .
docker run --rm -it ubuntu:time date

3. Debian

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
docker build -t debian:time .
docker run --rm -it debian:time date

三. 结语

此处不再列举太多,主要解决方式为安装tzdata,然后修改时区。