dockerfile中配置时区
https://www.cnblogs.com/kevingrace/p/5570597.html
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
宿主机时间
[root@jenkins-1 ~]# date
Fri May 12 11:20:30 CST 2017
容器时间
[root@jenkins-1 ~]# docker exec -ti 87986863838b /bin/bash
root@87986863838b:/# date                                                                                                                    
Fri May 12 03:20:33 UTC 2017
发现两者之间的时间相差了八个小时!
宿主机采用了CST时区,CST应该是指(China Shanghai Time,东八区时间)
容器采用了UTC时区,UTC应该是指(Coordinated Universal Time,标准时间)
统一两者的时区有下面几种方法
1)共享主机的localtime
创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的。
# docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro  docker.io/nginx  /bin/bash
2)复制主机的localtime
[root@jenkins-1 ~]# docker cp /etc/localtime 87986863838b:/etc/
然后再登陆容器,查看时间,发现已经跟宿主机时间同步了
[root@jenkins-1 ~]# docker exec -ti 87986863838b /bin/bash
root@87986863838b:/# date
Fri May 12 11:26:19 CST 2017
3)创建dockerfile文件的时候,自定义该镜像的时间格式及时区。在dockerfile文件里添加下面内容:
......
FROM tomcat
ENV CATALINA_HOME /usr/local/tomcat
.......
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
......
保存后,利用docker build命令生成镜像使用即可,使用dockerfile创建的镜像的容器改变了容器的时区,这样不仅保证了容器时间与宿主机时间一致(假如宿主机也是CST),并且像上面使用tomcat作为父镜像的话,JVM的时区也是CST,这样tomcat的日志信息的时间也是和宿主机一致的,像上面那两种方式只是保证了宿主机时间与容器时间一致,JVM的时区并没有改变,tomcat日志的打印时间依旧是UTC。
dockerfile中配置时区的更多相关文章
- Dockerfile 中的 multi-stage
		
在应用了容器技术的软件开发过程中,控制容器镜像的大小可是一件费时费力的事情.如果我们构建的镜像既是编译软件的环境,又是软件最终的运行环境,这是很难控制镜像大小的.所以常见的配置模式为:分别为软件的编译 ...
 - Dockerfile 中的 COPY 与 ADD 命令
		
Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 docker ...
 - Windows2016的 IIS中配置PHP7运行环境
		
Windows2016的 IIS中配置PHP7运行环境 在Windows 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 .进入控制面板>>程序和功能>>打开或 ...
 - Dockerfile 中的 multi-stage(多阶段构建)
		
在应用了容器技术的软件开发过程中,控制容器镜像的大小可是一件费时费力的事情.如果我们构建的镜像既是编译软件的环境,又是软件最终的运行环境,这是很难控制镜像大小的.所以常见的配置模式为:分别为软件的编译 ...
 - Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)
		
Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...
 - 【Docker】涨姿势,深入了解Dockerfile 中的 COPY 与 ADD 命令
		
参考资料:https://www.cnblogs.com/sparkdev/p/9573248.html Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令 ...
 - kvm虚拟化环境中的时区设置
		
guest OS时间保持 kvm技术是全虚拟化,guest OS并不需要做修改就可以直接运行,然而在计时方面却存在问题,guest OS计时的一种方式是通过时钟中断计数,进而换算得到,但host产生的 ...
 - [golang]在Go中处理时区
		
许多新手开发人员在处理时区时感到困惑. 如何将它们存储在数据库中 如何在Go中解析它们 当将时区存储在数据库中时,请始终遵循一个标准时区,理想的做法是保存UTC时间,并在显示时区时根据需要将其转化为各 ...
 - [转帖]Docker中的时区问题处理
		
Docker中的时区问题处理 这两天在打docker的时候,发现自己的容器启动之后,里面date -R的输出时区是UTC,总是和北京时间差了8个小时. 作者:云平台运维开发来源:今日头条|2019-0 ...
 
随机推荐
- codeforces 576C Points on Plane 相邻两点的欧拉距离
			
题意:给出n个点,要求排序后,相邻两点的欧拉距离之和小于等于2.5e9做法:由于0≤ xi, yi ≤ 1e6,所以可以将x<=1000的点分成一份,1000<x<=2000的点分成 ...
 - 第二章 Vue快速入门--12 事件修饰符的介绍
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
 - ubuntu NAT dhcp
			
说明: 1.在服务器版本中,没有想桌面版一样的NetworkManager工具,所以的一切都是在命令行上操作的. 2.本文只针对DHCP默认分配的IP进行查看. 方法: 1.如果要使用DHCP,那么需 ...
 - Mybatis 向oracle批量插入与更新数据
			
插入 <insert id="batchSave" parameterType="java.util.List"> INSERT INTO T_UP ...
 - nodejs基础一
			
Node.js是一个基于Chrome V8引擎的JavaScript运行. js的运行环境 运行js有两种: .js文件方式 交互(REPL): node 回车进入交互模式 .exit 退出交互模式 ...
 - 【Winform-自定义控件】自定义Tab Control 带关闭符号(X)的标签页
			
a form & a tabControl 思路: DrawMode设一定要设为OwnerDrawFixed 事件:Form_Load.tabControl1_DrawItem.tabCont ...
 - vue等诸多概念记录
			
讲的很好,转载记录下,转载自: https://www.cnblogs.com/taowd/p/11808710.html vue学习笔记-遗留问题记录 Node.js是什么?对node.js的理解 ...
 - removeProp(name)
			
removeProp(name) 概述 用来删除由.prop()方法设置的属性集 随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误.jQuery第一次分配un ...
 - kmp算法原理与应用(简单易懂)
 - [spring cloud] [error] java.lang.IllegalStateException: Only one connection receive subscriber allowed.
			
前言 最近在开发api-gateway的时候遇到了一个问题,网上能够找到的解决方案也很少,之后由公司的大佬解决了这个问题.写下这篇文章记录一下解决方案.希望可以帮助到更多的人. 环境 java版本:8 ...