转载地址:http://www.louisvv.com/archives/1716.html

问题描述:

在我们平时使用docker,运行我们的应用的时候,访问应用页面的时间与现在相差8个小时

无法结合时间点去判断当时服务的异常

同样,当我们在docker上运行某些服务时,需要时间与宿主机同步,否则会发生异常

原因:

宿主机设置了时区,而Docker容器并没有设置,导致两者相差8小时

解决办法:

为了保证容器和宿主机之间的时间同步:

可以使用以下几种办法:

1.Docker run

使用docker run运行容器时,添加如下参数

-v /etc/localtime:/etc/localtime:ro

验证:

[root@uat-app01 ~]# date   #当前宿主机时间
Tue Jul 10 11:18:41 CST 2018
[root@uat-app01 ~]# docker run -it -v /etc/localtime:/etc/localtime:ro centos  #运行docker,添加我们的参数
[root@df22a5da9c77 /]# date    #当前容器时间
Tue Jul 10 11:18:47 CST 2018

2.DockerFile

在Docker File中添加如下参数:

将时区配置添加到环境变量,并使用软连接,并将时区配置文件覆盖

ENV TimeZone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone   

实例DockerFile如下:

FROM centos   # Centos 基础镜像
MAINTAINER louisvv<648555416@qq.com>
ENV TimeZone=Asia/Shanghai    #添加时区环境变量,亚洲,上海
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone   #使用软连接,并且将时区配置覆盖/etc/timezone

构建镜像

docker build -t centos:time .

验证:

[root@uat-app01 ~]# date   #当前宿主机时间
Tue Jul 10 11:08:39 CST 2018
[root@uat-app01 ~]# docker run -it centos:time /bin/bash  #启动刚构建的 centos:time 镜像
[root@f35e963f9e8b /]# date  #容器时间
Tue Jul 10 11:08:44 CST 2018

正在运行的容器,时间如何同步?

有些同学看到这里,不禁会问,如果是一个正在运行的docker容器,如何同步时间呢?

这种方式同样适用于,构造镜像完成后,时间不同步的状况

在宿主机执行命令如下:

 docker cp -L /usr/share/zoneinfo/Asia/Shanghai  【容器名】:/etc/localtime

验证:

当前宿主机时间如下:

[root@uat-app01 ~]# date
Tue Jul 10 11:27:01 CST 2018

启动一个docker容器

[root@uat-app01 ~]# docker run -itd  centos
fe51fba60df5c2425991aab0922c7318d2c3cf2c27b817632765ed24e7486ce6

进入该容器查看时间,发现与现在相差8个小时,退出exec

[root@uat-app01 ~]# docker exec -it fe51 /bin/bash
[root@fe51fba60df5 /]# date
Tue Jul 10 03:27:11 UTC 2018
[root@fe51fba60df5 /]# exit
exit

在宿主机,执行我们提供的命令,将容器名改为对应的即可

[root@uat-app01 ~]# docker cp -L /usr/share/zoneinfo/Asia/Shanghai  fe51:/etc/localtime

再次进入容器查看时间,发现时间同步过来了

[root@uat-app01 ~]# docker exec -it fe51 /bin/bash
[root@fe51fba60df5 /]# date
Tue Jul 10 11:27:17 CST 2018

Docker容器时间与宿主机同步相关推荐

  1. 17.Docker 容器时间与宿主机同步

    Docker容器时间与宿主机同步 BY 赫墨拉 · PUBLISHED 2018年7月10日 · UPDATED 2019年6月10日 问题描述: 在我们平时使用docker,运行我们的应用的时候,访 ...

  2. Docker容器时间与宿主机不一致?3个解决方案

    目录 前言 更新历史 问题描述 解决方案 docker run 添加时间参数 Dockerfile解决方案 docker-compose解决方案 宿主机直接执行命令给某个容器同步时间 异常问题 Doc ...

  3. docker容器无法访问宿主机报出 No route to host

    项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...

  4. Docker容器学习梳理-容器时间跟宿主机时间同步

    在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

  5. docker容器端口影射宿主机端口

    #将容器的8080端口映射宿主机端口8080 –name:给容器起的名称 docker run -d -p 8080:8080 --name="tomcat7" -id 1130e ...

  6. 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本

    思路 我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作. 使用 sshpass (我的是CentOS 7.9环境) 1.安装sshpass apt-get update //更新一下 apt- ...

  7. docker容器时区与宿主机不一致的解决方法

    一般情况下,我们的宿主机服务器的时区都是在东八区,而docker容器里却是在零时区.这样就导致了时间差了8个小时,所以需要把容器的时间也设置成东八区. 在dockerfile中的设置如下: RUN l ...

  8. docker容器正常启动宿主机却无法正常访问

    问题:重新开启linux虚拟机后有时候可以访问有时候不可以访问docker容器或者完全无法访问 原因:linux内核版本和docker版本不兼容 解决:更新linux内核版本 yum update - ...

  9. Docker中创建MySQL容器,将宿主机目录直接挂载到目录

    Docker中创建MySQL容器,将宿主机目录直接挂载到目录 1.在Docker中下载MySQL镜像 docker pull mysql:5.7.25 2.创建目录/tmp/mysql/data和/t ...

最新文章

  1. android camera工程师,浅析Android Camera架构
  2. 如何评价三国里的袁绍
  3. 【数据结构与算法】之深入解析“学生出勤记录I”的求解思路与算法示例
  4. php 中访问常量,php 中的常量
  5. numpy array
  6. linux系统root用户忘记密码的重置方法
  7. LinkedIn开源数据发现和管理工具 WhereHows
  8. 重要更新丨完成前端重构,KubeOperator开源容器平台v3.7.0发布
  9. Java | ProGuard——java代码混淆利器
  10. 「3D视觉技术交流群」精华帖与关键问题
  11. php降序怎写,PHP数组如何按键名实现降序排列
  12. 解决U盘受保护(适用于U盘或移动硬盘)-亲测有效
  13. Linux内核错误码和错误指针
  14. Windows命令:Net使用详解
  15. joan jett(mv)
  16. 所见即所得:四款免编程移动游戏开发引擎推荐
  17. 计算机图形学【GAMES-101】8、辐射度量学与光线追踪
  18. PG::Covfefe
  19. 计算4的1万次方的结果
  20. Android 仿微博列表视频(一),静音播放

热门文章

  1. js本页导出Excel,下载
  2. 推荐好用的linux系统(manjaro)
  3. mysql最小费用最大流问题_图论-网络流之最小费用最大流问题
  4. 计算机应用基础第二版在线作业一,计算机应用基础在线作业一
  5. python画关系网图_使用python绘制人人网好友关系图示例
  6. 查询SQLSERVER执行过的SQL记录(历史查询记录)
  7. Hbase问题汇总与解答
  8. nginx 80端口重定向到443端口
  9. 教你 Shiro + SpringBoot 整合 JWT
  10. outlook express重定向