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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 日志服务器采集到的某一个系统的日志时间不对,和实际的时间相差了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



大功告成!

相关文章
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
15 5
|
7天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
3天前
|
存储 测试技术 开发者
docker中将数据卷挂载到容器
【10月更文挑战第11天】
15 3
|
4天前
|
缓存 运维 Docker
容器化运维:Docker Desktop 占用磁盘空间过大?教你轻松解决!
Windows Docker Desktop 使用过程中,因镜像、容器数据及构建缓存的累积,可能导致磁盘空间占用过高。通过删除无用镜像与容器、压缩磁盘以及清理构建缓存等方法,可有效释放空间。具体步骤包括关闭WSL、使用`diskpart`工具压缩虚拟磁盘、执行`docker buildx prune -f`清理缓存等。这些操作能显著减少磁盘占用,提升系统性能。
|
3天前
|
存储 应用服务中间件 云计算
深入解析:云计算中的容器化技术——Docker实战指南
【10月更文挑战第14天】深入解析:云计算中的容器化技术——Docker实战指南
16 1
|
2天前
|
存储 Kubernetes 监控
深入探索Docker容器化技术的奥秘
【10月更文挑战第15天】深入探索Docker容器化技术的奥秘
10 0
|
3天前
|
运维 Kubernetes 监控
掌握Docker容器化技术:构建、部署与管理的高效实践
【10月更文挑战第14天】掌握Docker容器化技术:构建、部署与管理的高效实践
12 0
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
27天前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
188 56
|
20天前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令