Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 基础架构

  • MQ

  • 微服务

  • 分布式

  • 高并发

  • 大数据

  • 容器化

    • Docker

      • Docker入门总结
      • Docker快速入门
      • Docker镜像优化
      • Docker数据持久化总结
      • Docker网络模式深度解读
      • Dockerfile入门
      • Dockerfile设置默认时区
        • Ubuntu
        • Alphine
        • Centos
      • Dockerfile中CMD与ENTERPOINT差异比较
      • Docker Compose使用总结
  • 架构设计
  • 容器化
  • Docker
Ravior
2018-01-05
目录

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

1
2
3
4
5
6

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

下面分三个基础系统镜像分别实现:

# Ubuntu

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

FROM ubuntu

MAINTAINER igitlib

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/* 
1
2
3
4
5
6
7
8
9
10
11
12
13

# 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
1
2
3
4
5
6
7

# Centos

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

FROM centos

ENV TIME_ZONE Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime
1
2
3
4
5
#Docker
上次更新: 2022/12/01, 11:09:34
Dockerfile入门
Dockerfile中CMD与ENTERPOINT差异比较

← Dockerfile入门 Dockerfile中CMD与ENTERPOINT差异比较→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式