首页 > 解决方案 > Docker 镜像时间戳问题

问题描述

我创建了一个全新的图像,但它显示50 years ago timestamp,请找到附加的片段。知道为什么吗?

我在 Dockerfile 中使用了以下步骤

FROM openjdk:11

VOLUME /tmp

COPY build/libs /app

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/test-service.jar"]

我的码头工人版本是

Docker version 19.03.5, build 633a0ea

Gradle 6.0.1 构建工具,以及用于创建图像的 Google Jib 插件

plugins {
    id 'com.google.cloud.tools.jib' version '1.8.0'
}

jib {
    from {
        image = 'openjdk:11'
    }
    to {
        image = 'test-service'
    }
    container {
        jvmFlags = ['-Xms512m', '-Xdebug']
        mainClass = 'com.sample.Application'
    }
    allowInsecureRegistries=true
}

在此处输入图像描述

标签: dockerdockerfiledocker-image

解决方案


那是来自 Google Jib 的。为了重现性,他们没有设置日期,或者他们明确地将日期设置为零值,即 1970 年的纪元。

有一个常见问题解答条目:https ://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#why-is-my-image-created-48-years-ago

出于重现性目的,Jib 将容器映像的创建时间设置为 Unix 纪元(UTC 时间为 1970 年 1 月 1 日 00:00:00)。如果您想使用不同的时间戳,请将 jib.container.creationTime / <container><creationTime>参数设置为 ISO 8601 日期时间。您也可以使用该值USE_CURRENT_TIMESTAMP 将创建时间设置为实际构建时间,但这会牺牲可重复性,因为时间戳会随着每次构建而改变。

设定creationTime参数

马文:

<configuration>
  <container>
    <creationTime>2019-07-15T10:15:30+09:00</creationTime>
  </container>
</configuration>

摇篮:

jib.container.creationTime = '2019-07-15T10:15:30+09:00'

推荐阅读