关于docker下容器和宿主机器时间不一致问题
在前几天,在阿里云的ECS上部署一个docker应用时,发现部署的应用在请求第三方应用时,一直出现超时的异常提示,刚开始以为是第三方应用系统的问题(此系统无赖躺枪,反正也不是一次两次了,多躺几次也就习惯了~),最后发现是容器的时间和数组的时间不一致,差了八小时。在上网查阅相关资料后,问题解决。这里就简单做个记录下。
Docker容器时间与主机时间不一致
通过date命令查看时间
查看主机时间
[root@izuf6gb2498ykvhcb4np5pz ~]# date
Sun Jul 15 15:30:41 CST 2018
查看容器时间
root@b43340ecf5ef:/#date
Sun Jul 15 15:31:10 UTC 2018
可以发现,他们相隔了8小时。
- CST应该是指(China Shanghai Time,东八区时间)
- UTC应该是指(Coordinated Universal Time,标准时间)
所以,只需要容器时区和宿主一致即可。
共享主机的localtime (方法一)
创建容器的时候指定启动参数,挂载localtime文件到容器内 ,保证两者所采用的时区是一致的。
docker run --name <name> -v /etc/localtime:/etc/localtime:ro
复制主机的localtime (方法二)
docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime
在完成后,再通过date命令进行查看当前时间。
创建自定义的dockerfile (方法三)
创建dockerfile文件,其实没有什么内容,就是自定义了该镜像的时间格式及时区。
FROM redis
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命令生成镜像使用即可。
Docker容器时间与tomcat时间不一致
在容器和宿主一致后,在满怀欣喜的重启容器后,发现最后时间还是不对。。发现tomcat输出的日志还是不一致的,这人生就很尴尬了。。
在tomcat/bin/catalina.sh文件中修改tomcat JAVA_OPTS,添加如下内容
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+08"
自此,问题解决。访问第三方应用也一切正常了,它真的是莫名躺枪了。哈哈哈
撤~
关于docker下容器和宿主机器时间不一致问题的更多相关文章
- Docker - 解决容器内获取的时间和主机的时间不一样的问题
问题背景 分别在容器和主机下执行 date 命令 可以看到,时间是完全不一样的 解决方案 在运行容器时,挂载 /etc/localtime 目录 docker run -d -v /etc/loca ...
- docker容器和宿主机时间不一致的问题
第1种:复制宿主机的localtime文件,到容器里docker cp /etc/localtime threg:/etc/ 注:这里 threg为容器名称,复制完后需重启容器 第2种在构建docke ...
- docker时间和本地时间不一致的问题
前言: 在本地执行date 和登录docker后的date显示的时间不一致,差一天多,不是8个小时 参考:戳这儿 先重启,查看后发现差8个小时 用里面cp localtime 再重启还是差8个小时 试 ...
- 修改Docker中容器的时间和宿主主机时间一致
修改Docker容器的时间和宿主时间一致 在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 DOCKER容器的时间 世界 ...
- docker容器时间与宿主机时间不一致问题
该问题是宿主机和容器时去不一致导致的. 把本机时区复制到宿主机即可: docker cp /etc/localtime a9c27487faf4:/etc/localtime 然后重启容器.
- Windows 7 下安装 docker 应用容器引擎
文档地址 ====================================== 安装篇 下载工具 https://get.daocloud.io/toolbox/ 下载完成点击安装 (可参考: ...
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- Docker容器挂载宿主目录的情形分析
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...
- Docker:容器与主机时间不同步问题解决
在Docker容器运行后,可能会发现容器时间与宿主机时间不一致,一般会差8个小时.这样会造成在容器中运行的web程序打出的日志时间与实际时间不一致,如果web程序中有定时任务也会造成影响等,需要对宿主 ...
随机推荐
- Golang Channel用法简编
转自:http://tonybai.com/2014/09/29/a-channel-compendium-for-golang/ 在进入正式内容前,我这里先顺便转发一则消息,那就是Golang 1. ...
- Cypress USB3014 C++DLL 导入问题
VS2017编译cpp工程出现问题 硬件型号:芯片版本 Cypress FX3 USB3014(和芯片无关)) 重现步骤: 1.解压 FX3_SDK_Windows_v1.3.3.exe 2.VS20 ...
- python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动
用python监控您的window服务 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://world77.blog.51cto.co ...
- js拼的onclick调用方法需要注意的地方 之二
那如果之前的方法不行,想传递json对象怎么办呢? 使用下面这种方法, getA = function(){ var obj = {'projectId':123,'projectName':'aac ...
- C# 处理Json
下面是JSON对象转换为字符串 public static string ToJson(object obj) { try { JavaScriptSerializer serializer = ne ...
- Struts2 配置项
基础Constants struts.devMode 可选值true,false (默认false),在开发模式下,struts2的动态重新加载配置和资源文件的功能会默认生效.同时开发模式下也会提供 ...
- spark svm
首先spark上的svm只能处理线性的,不能处理非线性的.其次spark上的svm求解过程与普通的不同.普通的是通过拉格朗日对偶,然后通过SMO方法求. 但是在spark上,则没有通过拉格朗日,而是直 ...
- Vue实现添加、删除、关键字查询
从今天开始,将不定期更新关于 Vue 的学习以及各种方法的使用,好了,下面就开始吧 Vue的实例创建首先需要我们引入一个vue.js(也可以在本地npm安装vue,我为了省事就...),然后在HTML ...
- PHP现阶段发现的不足点
1.php测试单元的实现(参考文档:https://blog.csdn.net/weixin_41282397/article/details/85052015)
- window 环境下在虚拟机上安装php环境
转发:https://www.cnblogs.com/orangegem/p/7191659.html 安装linux工具 :https://blog.csdn.net/z15732621582/ar ...