首页 > 其他分享 >docker 容器内系统时区tomcat时区修改

docker 容器内系统时区tomcat时区修改

时间:2023-03-20 16:44:42浏览次数:40  
标签:容器 tomcat zoneinfo Asia etc 时区 docker

现象:

查看docker 容器 运行的项目的日志时发现时间与北京时间差8小时

原因:

很容易猜到是 容器 时区错误,使用的是 协调世界时 UTC,可以近似看作0时区,

我们中国应该使用 东8区 时区,时区代号: Asia/Shanghai

解决:

先百度查询到 可以改 /etc/timezone 文件指向:

进入容器

docker exec -it 容器id  /bin/bash

用ls 可以看到,此文件为 软链接文件,指向 /usr/share/zoneinfo/Etc/UTC

在/usr/share/zoneinfo 下可以找到 各个时区的文件,只需要将/etc/timezone指向 /usr/share/zoneinfo/Asia/Shanghai 即可,命令:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

s参数代表软连接,f参数是覆盖

此时 使用 date 查看系统时间已经正常

然后重启 项目容器,查看日志,发现还是不对

又查了一下,发现有些 程序,比如 Java 是用另一个文件 /etc/timezone 作为时区进行推算时间的,这个是 普通文件,可以用vim直接修改,也可以用 输出重定向 符号命令:

echo "Asia/Shanghai" > /etc/timezone

再重启容器,查看日志日期,已经正常

 

可能有人想不重启项目和容器是否可以,很遗憾没有找到此方法,如果业务确实不能停,应该考虑 微服务 或者 nginx负载均衡,起多个 项目docker容器,就可以一个一个改而不影响业务.

还有就是再构建 docker 镜像的时候,DockerFile里可以把时区用命令提前设置好,

或者 docker run 运行参数上设置好(包括使用 -v 映射 宿主机时区文件到容器内同步),

详细可参考以下文章:

Docker容器时间如何与宿主机同步问题解决方案小结 - 掘金 (juejin.cn)

docker 时区调整 - 简书 (jianshu.com)

设置Docker 容器时区的几种方法 - 掘金 (juejin.cn)

docker tomcat 日志时间时区不对 - 简书 (jianshu.com)

如何给容器配置时区 (Timezone) - 知乎 (zhihu.com)

标签:容器,tomcat,zoneinfo,Asia,etc,时区,docker
From: https://www.cnblogs.com/dirgo/p/17236809.html

相关文章

  • install mysql in docker
    installmysqlindocker#step-1:configuremysql_port='3306'mysql_password='123qwe'mysql_data_dir="~/docker/mysqld_${mysql_port}/data"#step-2:delete-da......
  • CentOS 7.X部署Tomcat
    1、安装基础库yum-yinstallapr-develgccgcc-c++makeopenssl-developenssljava-11-openjdk-*libffi-develredhat-rpm-configlrzsz2、编译安装native(默认tomcat中......
  • Nginx和tomcat实现负载均衡
    拓扑图:​推荐步骤:​Nginx服务器开启路由转发功能,客户端和tomcat服务器配置IP地址设置正确安装tomcat服务器配置网站安装Nginx代理和负载均衡功能配置DNS服务器域名解析,客户......
  • Linux环境下部署tomcat服务-单项目部署
    一、上传tomcat安装包并解压1. apache-tomcat-8.5.38.zip2.安装包可以存放任意目录二、将被测项目放入webapps目录下三、修改被测项目中的配置文件信息......
  • Docker compose Mysql 8 sql_mode 配置及修改only_full_group_by docker sql_mode 'N
    mysql默认的配置sql_mode包含ONLY_FULL_GROUP_BY,我们要去掉,网上找了好多帖子,大多数copy来copy去,说的乱七八糟,很无奈,最后折腾了半天才搞定,主要是注意2点1、先明白你的mysq......
  • 二进制部署docker docker-20.10.7
    1、下载 docker二进制包文件官网下载地址​​​https://download.docker.com/linux/static/stable/x86_64/​​wgethttps://download.docker.com/linux/static/stable/x86......
  • Docker-批量删除REPOSITORY或TAG为<none>的镜像
    问题通过dockerimages命令查询本地镜像列表有可能看到repository和tag均为none的镜像,这种镜像在Docker官方文档中被称作danglingimages。原因根据官方解释,该镜像的......
  • 使用Docker部署Consul集群并由Ocelot调用
    关于consul的介绍就不写了百度就行,我们直接开干。一、部署consul集群拉取consul的镜像dockerpullconsul然后部署consul容器dockerrun--nameconsul1-d-p85......
  • 10、Docker 优雅退出
    容器中的应用优雅的退出一、进程的退出-Linux1、kill参数1SIGHUP启动被终止的程序,可让该进程重新读取自己的配置文件,类似重新启动。2SIGINT相当于用键盘......
  • 9、Docker 多级构建
    DockerimageBuild高级镜像Cache机制DockerDaemnon通过Dockerfile构建镜像时,当发现即将新构建出的镜像与已有的某镜像重复时,可以选择放弃构建新的镜像,而是选用已......