我需要使用"gcr.oi/distroless/java:8“镜像来保持我的镜像的轻量级。但是,当我运行程序时,我得到错误:“由FileNotFoundException: /usr/lib/x86_64_linux_gnu/linbnss3.so引起”和“无法初始化NSS”异常。因为我必须使用这个图像,所以我想从"FROM openjdk:8-jre-stretch“的另一个图像中复制这个丢失的文件/依赖项。请建议如何复制此依赖项。
发布于 2021-05-25 19:06:40
这个问题本身并不是非常具有描述性,因此我不能在这里给出一个具体的答案,也不能详细说明您在哪里犯了错误。但我可以给您一个基于Docker documentation中引入的示例的示例。
# syntax=docker/dockerfile:1
FROM gcr.oi/distroless/java:8
COPY --from=openjdk:8-jre-stretch /location/of/the/file/in/image /your/target/location
# After that, do your own stuffCOPY --from告诉Dockerfile从其他镜像中复制文件。如果该镜像存在于DockerHub中,则会从其中提取该镜像以启用副本。如果DockerHub中不存在该映像,则必须在本地拥有该映像。
如果您在实现我在这里给出的示例时遇到任何问题,请告诉我。
如果文件在没有额外步骤的情况下没有出现在映像中,那么您可以使用多阶段构建。例如。
# syntax=docker/dockerfile:1
FROM openjdk:8-jre-stretch as builder
# execute some logic that you need to create the file
FROM gcr.oi/distroless/java:8
COPY --from=builder /location/of/the/file/in/image /your/target/location
# After that, do your own stuff代码
来自openjdk的
:8-jre-stretch as builder
开始构建一个中间镜像,您可以稍后使用名称'builder‘引用该镜像。
https://stackoverflow.com/questions/67686244
复制相似问题