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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 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



大功告成!

相关文章
|
7天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
3天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
5天前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
22 1
|
7天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
7天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
7天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
23 1
|
7天前
|
安全 Docker 微服务
深入理解Docker容器技术:从基础到实践
深入理解Docker容器技术:从基础到实践
|
4天前
|
存储 运维 数据中心
使用Docker容器化应用程序的优势与挑战
使用Docker容器化应用程序的优势与挑战
9 0
|
6天前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
29 0
下一篇
无影云桌面