Docker容器时间与宿主机同步

转载地址: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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值