如何修复Docker Build生成的容器中的时区

k10s72fa  于 2022-12-03  发布在  Docker
关注(0)|答案(2)|浏览(143)

对不起,我是一个新手,以dockerdocker-compose
“已保存”容器未显示正确的时区。
背景说明:
1.由于公司的限制,我无法将Dockerized SpringBoot 应用程序放到主机B上。
1.我的老板让我在主机A中对接 SpringBoot 应用程序。
1.将docker save $imageName > application.tar保存在主机A中
1.在主机B中加载保存的图像docker load < application.tar
1.在主机B中运行Docker映像...
1.主机A和主机B处于同一时区(香港时间)
结果:
1.容器内的时区(检查日志结果)发现主机A中的日志时间正确(香港时区,UTC+8)(无论是由docker run还是docker compose触发)
1.容器内的时区(检查日志结果)发现主机B中的日志时间错误(UTC+0)(无论是由docker run还是docker compose触发)
Docker版本客户端:版本:1.13.1 API版本:1.26软件包版本:-1.13.1-88.git07f3374.el7.x86_64 Go语言版本号:go1.10.2 Git提交:07 f3374/1.13.1建造日期:2018年12月6日星期四07:01:49操作系统/架构:linux/amd 64操作系统
对接合成版本对接合成版本1.23.2,构建1110 ad 01对接合成版本:3.6.0 CPython版本:3.6.7 OpenSSL版本:供应2017年05月归档
主机A Ubuntu版本18.04.3
第一个

zvms9eto

zvms9eto1#

使用环境变量设置时区

  • 可以使用环境变量设置容器的时区

docker run -e TZ=美洲/约克ubuntu日期

  • 时区数据包TZDATA需要安装在容器中
  • 配置NTP服务器以确保时区在container中同步
zfciruhq

zfciruhq2#

### COPY /etc/timezone      /ect/timezone
### fail. It cannot copy the file to the container internally

################################################
## No luck to execute dpkg-reconfigure for UBUNTU 18.0.4.3
################################################
## ENV DEBIAN_FRONTEND=noninteractive
### RUN dpkg-reconfigure --frontend noninteractive tzdata
OR
### RUN sudo dpkg-reconfigure --frontend noninteractive tzdata
################################################

################################################
## no use
################################################
ENV TZ=Asia/Hong_Kong
### RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
################################################

################################################
## no use
################################################
## RUN echo "Asia/Hong_Kong" > /config/etc/timezone
################################################

解决方法:

RUN apk add --no-cache tzdata && cp -r -f /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime

如果不运行此命令,则构建映像不包含/etc/timezone,因此它使用UTC时间。

相关问题