Docker 推送失败,出现 /var/lib/docker/overlay2/<id>/merged/run/sisidsdaemon.pid:没有这样的文件或目录

Docker push failing with /var/lib/docker/overlay2/<id>/merged/run/sisidsdaemon.pid: no such file or directory

提问人:Venu Madhav 提问时间:11/15/2023 更新时间:11/17/2023 访问量:50

问:

当我尝试将图像推送到伪影时,看到以下错误。docker 构建成功。

The push refers to repository [jfrogartifactory.com/jenkins/k8stools]
bd862c2c6862: Pushed
fa9470006406: Pushing [==================================================>]  51.33MB/51.33MB
3416052442ea: Pushed
097ffe707280: Pushed
66902afc5923: Layer already exists
56c2913a98f0: Layer already exists
234119318760: Layer already exists
34f7184834b2: Layer already exists
5836ece05bfd: Layer already exists
72e830a4dff5: Layer already exists
open /var/lib/docker/overlay2/jxl9gqgs0xj61kftk9b4casbo/merged/run/sisidsdaemon.pid: no such file or directory

对应的 Dockerfile 为:

FROM alpine:latest
USER root
ARG ARCH=amd64

RUN apk update && apk upgrade --no-cache && \
    apk --no-cache add curl wget git jq yq
ARG HELM_VERSION=3.13.0
ARG KUBECTL_VERSION=1.27.0
ARG KUBESEAL_VERSION=0.19.5
# Install kubectl
RUN curl -sLO https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl && chmod +x kubectl && mv kubectl /usr/local/bin

#Install Helm
RUN curl -LO https://get.helm.sh/helm-v${HELM_VERSION}-linux-${ARCH}.tar.gz  && \
    tar -xzvf helm-v${HELM_VERSION}-linux-${ARCH}.tar.gz && \
    mv linux-${ARCH}/helm /usr/local/bin/helm && \
    chmod +x /usr/local/bin/helm && \
    rm -rf linux-${ARCH} helm-v${HELM_VERSION}-linux-${ARCH}.tar.gz


USER openjdk
ENTRYPOINT ["/bin/sh"]

尝试了所有 docker 清理命令,但仍然没有运气。

docker rm -vf $(docker ps -aq)
docker rmi -f $(docker images -aq)
docker volume prune -f

有人可以在这方面提供帮助吗?

我正在运行 docker 的实例位于

操作系统: RHEL 8

Docker 版本:24.0.7

Linux rhel docker-build docker-push

评论


答:

0赞 Jam Ma 11/17/2023 #1

在设置 ENTRYPOINT 之前,Dockerfile 会切换到名为 openjdk 的用户。确保 openjdk 用户存在并具有访问所需目录和文件的必要权限。如果 openjdk 应该是 Java 应用程序的服务用户,请确保正确创建和配置该用户。

评论

0赞 Venu Madhav 11/17/2023
OpenJDK 用户已经作为基础映像的一部分创建,并且它存在。寻找原因,为什么只有一层重试并抛出错误消息。