[转帖]Dockerfile设置默认时区

我们打包镜像时使用的基础镜像基本上都是采用UTC(格林时间),与我们常用的北京(上海)时间(CST)相差8个小时。我们可以在创建一个容器的时候,将宿主机时区相关的目录文件挂在到容器上:

docker run --rm -it -v /etc/localtime:/etc/localtime ubuntu
# 进入容器,date测试
root@3e6c1d137e02:/# date
Mon Aug  5 15:26:20 CST 2017

这种方法相对麻烦,每次新建容器都需要挂载宿主机器时区相关的配置目录/文件。为了简化这一步,可以通过Dockerfile打包新的镜像,修改容器的默认时区。 下面分三个基础系统镜像分别实现:

Ubuntu

使用ubuntu作为基础镜像,需要先下载安装tzdata包,默认时区是UTC时区,修改配置文件,并通过dpkg-reconfigure重置时区配置生效。 安装完成之后,为了尽量减少镜像体力,删除安装过程中产生的各种非必要文件。

FROM ubuntu
 
MAINTAINER fastjrun
 
ENV TIME_ZONE Asia/Shanghai
 
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y tzdata \
    && ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone \
    && dpkg-reconfigure -f noninteractive tzdata \
    && apt-get clean \
    && rm -rf /tmp/* /var/cache/* /usr/share/doc/* /usr/share/man/* /var/lib/apt/lists/*

Alphine

Alphine号称最小的Linux系统镜像(才5M), 先采用apk包管理器来安装tzdata包,设置相关配置文件。

FROM alpine
MAINTAINER igitlib
 
RUN apk add --no-cache tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk del tzdata

Centos

centos就相对很简单,只需要添加配置文件即可。

FROM centos
 
ENV TIME_ZONE Asia/Shanghai
 
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值