Docker学习总结(44)——Docker容器时间与主机时间不一致的三种解决方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012562943/article/details/89511435

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程

问题

我们在使用docker时发现Docker容器时间与主机时间经常出现不一致的情况,其实在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而国内系统为东八区。下面我们可以直接通过date命令查看主机时间和容器时间。

可以发现,他们相隔了8个小时。CST 美国、澳大利亚、古巴或中国的标准时间。UTC(Coordinated Universal Time)标准时间。所以,这2个时区的时间实际上应该相差8个小时。

三种解决方式

没有设置过的容器, 一般跟宿主机时间会有差别。那我们解决容器时间与主机时间不一致的思路就是统一两者的时区。

1、共享主机的localtime

创建容器的时候指定启动参数,挂载localtime文件到容器内 ,保证两者所采用的时区是一致的。

docker run --name <name> -v /etc/localtime:/etc/localtime:ro ....

2、复制主机的localtime

docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime

在完成后,再通过date命令进行查看当前时间。但是,在容器中运行的程序的时间不一定能更新过来,比如在容器运行的MySQL服务,在更新时间后,必须要重启Docker容器,才能读取到更改过后的时间。

3、创建自定义的dockerfile

创建dockerfile文件,其实没有什么内容,就是自定义了该镜像的时间格式及时区。

FROM redis
FROM tomcat
 
ENV CATALINA_HOME /usr/local/tomcat
 
#设置时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# Ubuntu
RUN echo “Asia/shanghai” 》 /etc/timezone;
保存后,利用docker build命令生成镜像使用即可。

猜你喜欢

转载自blog.csdn.net/u012562943/article/details/89511435