gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:05:58 26 4
gpt4 key购买 nike

抱歉,我是 Docker 和 Docker Compose 的新手。

“已保存”容器未显示正确的时区。

背景:

  • 由于公司限制,我无法将 Dockerized SpringBoot 应用程序放到主机 B。
  • 我的老板告诉我在主机 A 中使用 Dockerized SpringBoot 应用程序。
  • 保存 Docker save $imageName > application.tar在主机 A
  • 加载保存的图像 Docker load < application.tar在主机 B
  • 在主机 B 中运行 Docker 镜像...
  • 主机A和主机B在同一时区(香港时间)

  • 结果:
  • 容器内的时区(查看日志结果)发现Host A中的日志时间是正确的(香港时区,UTC+8)
    (无论是Docker run还是Docker compose触发)
  • 容器内的时区(查看日志结果)发现Host B中的日志时间是WRONG (UTC+0)
    (无论是Docker run还是Docker compose触发)

  • docker 版本
    客户:
    版本:1.13.1
    API 版本:1.26
    包版本:docker-1.13.1-88.git07f3374.el7.x86_64
    转版本:go1.10.2
    Git 提交:07f3374/1.13.1
    内置:2018 年 12 月 6 日星期四 07:01:49
    操作系统/架构:linux/amd64

    docker-compose 版本
    docker-compose 版本 1.23.2,构建 1110ad01
    docker-py 版本:3.6.0
    CPython 版本:3.6.7
    OpenSSL 版本:OpenSSL 1.1.0f 2017 年 5 月 25 日

    托管一个 Ubuntu 版本
    18.04.3
    FROM java:8-jdk-alpine
    WORKDIR /root/flexi/
    COPY ./target/foo.jar /root/flexi/

    ### an alpine based image you have to install the tzdata first ####
    RUN apk add --no-cache tzdata


    ### ENV TZ=Asia/Hong_Kong
    ### RUN echo "Europe/Stockholm" > /etc/timezone
    ### RUN dpkg-reconfigure -f noninteractive tzdata
    ### Not work for ubuntu to dpkg-reconfigure


    VOLUME /log

    ADD db.properties /root/flexi
    EXPOSE 9988
    RUN sh -c 'touch foo.jar'
    ENTRYPOINT ["java", "-jar", "foo.jar"]
    version: '2.2'
    services:
    foos:
    build:
    context: ./
    dockerfile: Dockerfile
    image: foos
    ports:
    - "9555:9988"
    environment:
    - TZ=Asia/Hong_Kong
    networks:
    - network1
    volumes:
    - /log:/log
    networks:
    network1:
    docker build -t foos .
    docker inspect -f '{{ .Created }}'  foos
    --> Shows UTC time (in both Host A and Host B)

    最佳答案

    使用环境变量设置时区

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

    docker run -e TZ=America/New_York ubuntu date


  • 容器中需要安装时区数据包tzdata
  • 配置 NTP 服务器以确保时区在容器中同步
  • 关于docker - 如何修复 Docker Build 生成的容器中的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781418/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com