Docker容器时间不同步,修改Docker时区

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 日志服务器采集到的某一个系统的日志时间不对,和实际的时间相差了8个小时,问题是出在容器的时区的设置上。docker的时区是UTC时区

今天发现日志服务器采集到的某一个系统的日志时间不对,和实际的时间相差了8个小时,我们估计问题是出在容器的时区的设置上。

1. 进入docker 容器后,查看一下时间:

#进入容器docker exec -it xxxx /bin/bash
#查看时间bash-4.4# dateMon Feb 1301:32:02 UTC 2023


果然时区是UTC时区


2. 查看一下docker中操作系统的版本,是ununtu 20.04


bash-4.4# cat /proc/versionLinux version 5.4.0-126-generic (buildd@lcy02-amd64-072) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #142-Ubuntu SMP Fri Aug 26 12:12:57 UTC 2022

3. 再检查相应的docker的Dockerfile



FROM anapsix/alpine-java:8u202b08_jdk_unlimited
RUN mkdir-p /app/log 
WORKDIR /app
ADD ./abc.jar ./abc.jar
ENTRYPOINT ["/bin/sh", "-c", "java -jar abc.jar"]

## 解决问题

1. 对Dockerfile进行修改,增加"时区配置"后如下:


FROM anapsix/alpine-java:8u202b08_jdk_unlimited
ENV TZ Asia/Shanghai
RUN ln-sf /usr/share/zoneinfo/${TZ} /etc/localtime
RUN echo${TZ} > /etc/timezone
RUN mkdir-p /app/log 
WORKDIR /app
ADD ./abc.jar ./abc.jar
ENTRYPOINT ["/bin/sh", "-c", "java -jar abc.jar"]


**发现还是不好使,时区还是原来的UTC时区!!!**


2. 检查后,发现原来缺少tzdata包


于是对Dockerfile进行修改,"安装tzdata包"后如下:


FROM anapsix/alpine-java:8u202b08_jdk_unlimited
RUN apk add --no-cache tzdata
ENV TZ Asia/Shanghai
RUN ln-sf /usr/share/zoneinfo/${TZ} /etc/localtime
RUN echo${TZ} > /etc/timezone
RUN mkdir-p /app/log 
WORKDIR /app
ADD ./abc.jar ./abc.jar
ENTRYPOINT ["/bin/sh", "-c", "java -jar abc.jar"]


3. 开始构建


sudo docker run --name cloud-render-oss-v3 -dit-p8000:8000cloud-render-oss:v3


Step 1/13 : FROM anapsix/alpine-java:8u202b08_jdk_unlimited
---> 4357b436992a
Step 2/13 : MAINTAINER abc:1.0
---> Using cache
---> 7b43d961907c
Step 3/13 : RUN apk add --no-cache tzdata
---> Running in db41073e58ab
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tzdata (2020a-r0)
Executing busybox-1.28.4-r3.trigger
OK: 25 MiB in24 packages
Removing intermediate container db41073e58ab
---> e1cbf2ea9881
Step 4/13 : ENV TZ Asia/Shanghai
---> Running in d8689874d96d
Removing intermediate container d8689874d96d
---> b91855f5ae60
Step 5/13 : RUN echo${TZ}---> Running in e92b6f6aab22
Asia/Shanghai
Removing intermediate container e92b6f6aab22
---> 6eb50e8003f3
Step 6/13 : RUN ln-sf /usr/share/zoneinfo/${TZ} /etc/localtime
---> Running in 9bd7a1005cfd
Removing intermediate container 9bd7a1005cfd
---> 49270005a068
Step 7/13 : RUN echo${TZ} > /etc/timezone
---> Running in fdccfb507a2c
Removing intermediate container fdccfb507a2c
---> d573b3b66e4f


4. 再次进入容器,查看时间


bash-4.4# dateMon Feb 1309:50:49 CST 2023



大功告成!

相关文章
|
6天前
|
Ubuntu Linux pouch
Docker容器管理工具
文章介绍了Docker容器管理工具,以及早期使用的LXC容器管理工具,包括它们的安装、使用和相关技术特点。
30 10
Docker容器管理工具
|
6天前
|
监控 数据管理 pouch
Docker容器技术概览
关于Docker容器技术的概览,包括Docker的优势、劣势、核心技术、容器所依赖的技术,以及Docker容器的管理和编排工具。
34 7
Docker容器技术概览
|
6天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
6天前
|
NoSQL 应用服务中间件 Redis
Docker跨宿主机容器通信-通过网络跨宿主机互联
这篇文章介绍了Docker容器跨宿主机通信的实现方法,包括Docker的四种网络模式(host、none、container、bridge)以及如何通过修改网络配置和添加路由规则来实现不同宿主机上的容器之间的互联。
13 0
Docker跨宿主机容器通信-通过网络跨宿主机互联
|
6天前
|
应用服务中间件 nginx Docker
Docker同一台宿主机容器通信-通过容器名称互联
本文详细介绍了如何通过容器名称实现同一宿主机上容器间的互联,并提供了实战案例。首先,文章解释了容器间通过自定义名称访问的原理,随后演示了创建并连接Tomcat与Nginx容器的具体步骤。此外,还讨论了配置中可能出现的问题及解决方案,包括避免硬编码IP地址和使用自定义容器别名来增强系统的灵活性与可维护性。通过这些实践,展示了如何高效地配置容器间通信,确保服务稳定可靠。
14 1
Docker同一台宿主机容器通信-通过容器名称互联
|
6天前
|
应用服务中间件 Shell nginx
Docker容器操作基础命令
关于Docker容器操作基础命令的教程,涵盖了从启动、查看、删除容器到端口映射和容器信息获取的一系列常用命令及其使用方法。
45 14
|
3天前
|
运维 安全 开发者
Docker容器技术
Docker容器技术
21 6
|
3天前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
3天前
|
负载均衡 大数据 测试技术
docker容器技术有哪些应用场景?
docker容器技术有哪些应用场景?
19 5
|
6天前
|
存储 Unix 虚拟化
Docker容器简介
Docker是一种轻量级的虚拟化技术,它通过容器化应用,提高了硬件资源利用率,简化了应用的部署、运输和运行,且与虚拟机相比,具有更快的交付速度和更低的资源消耗。
21 2