码迷,mamicode.com
首页 > 其他好文 > 详细

docker 构建基础镜像 时区问题

时间:2016-06-24 22:20:12      阅读:575      评论:0      收藏:0      [点我收藏+]

标签:docker 时区

前言


在使用tomcat官方docker 镜像时,程序在与微信通信过程中返回了时间差问题,查看后发现是docker 容器的问题。


问题

docker 官方镜像使用的都是UTC 标准时间,这就导致了比beijing时间晚8小时。


解决这一问题并不难,只要修正容器的时区就可以了。众所周知,对容器的修改并不会影响到镜像,所以又会出现这样一个问题,再次从镜像启动容器时,时间就会又变成UTC 标准时间。对于此问题,自然是可以使用docker commit 来解决,但我并不想这样做……


解决方案

基于centos 的镜像,系统时区是由/etc/localtime 控制

基于debian 的镜像,系统时区由/etc/timezone 控制

可将系统内的/usr/share/zoneinfo/Asia/Shanghai 文件直接复制到以上位置修改时区


但在基于centos 镜像内,只修改/etc/localtime ,tomcat 取的仍然是UTC 时区,可配置catalina 启动文件的JAVA_OPTS参数,修正tomcat的时区

JAVA_OPTS="-Duser.timezone=GMT+08"

还有一种方式,就是同时设置/etc/timezone文件


docker build -t morrowind/centos .

Dockerfile

#Version: Centos 7.2 CST
FROM centos:latest
MAINTAINER Morro Wind "example@hotmail.com"
RUN yum -y -q upgrade
#update system timezone
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#update application timezone
RUN echo "Asia/Shanghai" >> /etc/timezone

通过Dockerfile 构建镜像时需要注意,对时区的修改一定要放在yum upgrade后面,否则upgrade 后,会修改时区为UTC


后面就可以基于此基础镜像,构建应用镜像了

本文出自 “morrowind” 博客,请务必保留此出处http://morrowind.blog.51cto.com/1181631/1792732

docker 构建基础镜像 时区问题

标签:docker 时区

原文地址:http://morrowind.blog.51cto.com/1181631/1792732

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!