在前几天,在阿里云的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下容器和宿主机器时间不一致问题的更多相关文章

  1. Docker - 解决容器内获取的时间和主机的时间不一样的问题

    问题背景 分别在容器和主机下执行 date 命令 可以看到,时间是完全不一样的 解决方案 在运行容器时,挂载 /etc/localtime  目录 docker run -d -v /etc/loca ...

  2. docker容器和宿主机时间不一致的问题

    第1种:复制宿主机的localtime文件,到容器里docker cp /etc/localtime threg:/etc/ 注:这里 threg为容器名称,复制完后需重启容器 第2种在构建docke ...

  3. docker时间和本地时间不一致的问题

    前言: 在本地执行date 和登录docker后的date显示的时间不一致,差一天多,不是8个小时 参考:戳这儿 先重启,查看后发现差8个小时 用里面cp localtime 再重启还是差8个小时 试 ...

  4. 修改Docker中容器的时间和宿主主机时间一致

    修改Docker容器的时间和宿主时间一致 在查看容器的日志的,发现时间有和宿主主机时间相差有8个小时,而且宿主主机使用的是CST时间,容器容器使用的是UTC时间 主机时间 DOCKER容器的时间 世界 ...

  5. docker容器时间与宿主机时间不一致问题

    该问题是宿主机和容器时去不一致导致的. 把本机时区复制到宿主机即可: docker cp /etc/localtime a9c27487faf4:/etc/localtime 然后重启容器.

  6. Windows 7 下安装 docker 应用容器引擎

    文档地址 ====================================== 安装篇 下载工具 https://get.daocloud.io/toolbox/ 下载完成点击安装 (可参考: ...

  7. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  8. Docker容器挂载宿主目录的情形分析

    Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker ...

  9. Docker:容器与主机时间不同步问题解决

    在Docker容器运行后,可能会发现容器时间与宿主机时间不一致,一般会差8个小时.这样会造成在容器中运行的web程序打出的日志时间与实际时间不一致,如果web程序中有定时任务也会造成影响等,需要对宿主 ...

随机推荐

  1. asp中实现lable自动换行

    asp中实现lable自动换行 因为在用Label标签显示内容时,内容太多,想实现自动换行.我们知道在WINFORM中程序中,有一个属性是AUTOSIZE 改成FALSE 是可以实现的.但是在ASP. ...

  2. tcpdump网络数据抓包

    tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供 ...

  3. Entity Framework Code-First(8):Configure Domain Classes

    Configure Domain Classes in Code-First: We learned default Code-First Conventions in the previous se ...

  4. 获得Servlet的初始化参数

    通过ServletConfig接口的getInitParameter(java.lang.String name)方法

  5. 第四周作业-视频学习、教材作业wireshark

    教材总结与作业 总结 网络嗅探技术定义:网络嗅探(sniff)是一种黑客常用的窃听技术,(1)利用计算机的网络接口截获目的地为其他计算机的数据报文,(2)监听数据流中所包含的用户账户密码或私密通信等. ...

  6. 高考是最后一次拼智商的事了。(beacuse 大多数人的努力程度之低根本轮不到拼天赋!)

    高考是最后一次拼智商的事. —因为大多数人的努力程度之低  根本轮不到拼天赋 在这个不起眼的小公司实习也有两周了,周四经理说说为了增加IOS开发小组和安卓开发小组之间的交流,准备每周开一次这种报告会. ...

  7. 深入浅出HTML PDF扫描版

    <深入浅出HTML>是一部讲述现代Web标准的优秀教程,彻底摒弃了过时的内容,始终贯彻三层分离的思想.书中结合实例讲述如何使用HTML.CSS设计符合现代Web标准的网页,并讲解了如何使用 ...

  8. jqGrid 跨页选择以及回显的处理

    思路:定义全局的array(selectedIds),当列表选中的时候就push进去,当列表取消选中时,将该项从selectedIds中删除 重点:1.列表加载完成时为列表增加复选框,并给每一个che ...

  9. AtCoder Beginner Contest 121 题解

    题目链接:https://atcoder.jp/contests/abc121 A White Cells 分析:题目数据规模很小,直接暴力修改都可以.或者可以推出公式. 代码: #include & ...

  10. 关系型数据库基础概念:MySQL系列之开篇

    一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定 ...