关于docker的时区问题,四种方式解决,有一种可以无任何bug解决

关于docker容器修改时区

    • 前言:
    • 解决思路总结
    • 无视版本问题的解决过程

前言:

docker是一种非常方便的东西,特别好用在解决问题之前,先来看看他的官方介绍(本人喜欢在解决问题之前先弄清
楚问题是什么,以及问题中涉及到的一些其他东西的相关概念):

Docker takes away repetitive, mundane configuration tasks and is used throughout the 
development lifecycle for fast, easy and portable application development - desktop and 
cloud. Docker’s comprehensive end to end platform includes UIs, CLIs, APIs and security 
that are engineered to work together across the entire application delivery lifecycle.

大意是说docker将重复的,平凡的配置任务消除,并且使桌面与云端的开发变得更加的快速,并且可以移植,用途非常广泛

接下来是问题的描述,时区问题:
	时区问题是怎么引起的呢??因为docker默认使用的是UTC(协调世界时,又称世界统一时间、世界标准时间、
国际协调时间。)而中国所在时区为东八区,所以就引发了时区问题。时区问题不会影响代码正确性,但是在一些类似
认证授权的情况下,可能会发生一些意想不到的情况,所以统一时区,可以有助于后期避免这些坑。

但是有时候又因为一些特殊的原因,导致修改不成功,可能是各种版本问题,容器构建问题,还有可能是锁的问题,等
等,有时候重启就好了。。。。经过思考后,总算是发现一个可以无后顾之忧的办法。如下

解决思路总结

# 提供多种解决思路,选择哪种可以自己决定,这里我只写自己确认可以无视版本解决问题的那个思路的具体流程

1:	   通过现有的容器修改时区之后,然后在以现在的容器,生成新的镜像,这样这个镜像的时区以后就是咱们修改
的东八区,以后再也不需要担心这个后来生成镜像的时区问题了(无视版本差异,一劳永逸,缺点是有点麻烦,如果有
镜像依赖的话,需要修该docker-compose多处镜像和依赖镜像的名称。不过相信各位熟悉linux的awk命令的大佬不会被这点困难难到)
2:    通过docker-compose中的配置来决定时区(这个配置可能会被版本影响,而且字典和复制形式容易混合而出
错,经过本人实际测试,有时候会不灵光。)
3:    在启动的时候指定时区参数(emmm说实话这个没有试过,不过料想也是有可能被版本所影响)
4:    可以用复制文件的方式来解决
			(命令:docker cp  /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime
			  或者:docker cp /etc/localtime 容器ID:/etc/localtime
				)

无视版本问题的解决过程

通过现有的容器修改时区之后,然后在以现在的容器,生成新的镜像,这样这个镜像的时区以后就是咱们修改的东八区,以后再也不需要担心这个后来生成镜像的时区问题了

1:进入docker容器,查看时区:(是UTC)
关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第1张图片
2:查看宿主机的时区:(是CST)
关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第2张图片
3:将宿主机中的时区文件复制到容器中
命令:docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/etc/localtime关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第3张图片
4:查看容器时区

关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第4张图片
5:保存当前容器为新的镜像:(使用docker commit。如下:)
关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第5张图片

6:执行命令:(自此,这个镜像就是CST时区了,让我们启动看看)
在这里插入图片描述

7:启动且查看容器的时区(ok ,完成)
关于docker的时区问题,四种方式解决,有一种可以无任何bug解决_第6张图片

你可能感兴趣的:(运维部署,linux,docker)