You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker镜像推送失败:找不到sisidsdaemon.pid文件

Docker镜像推送Artifactory失败求助

问题现象

Docker构建成功,但推送镜像到Artifactory时出现如下错误:

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

环境信息

  • OS: RHEL 8
  • Docker version: 24.0.7

问题分析与解决方案

1. 修复用户不存在的问题

Dockerfile最后切换到openjdk用户,但alpine:latest镜像默认没有这个用户,这会导致镜像内部用户上下文异常,可能触发推送时的文件系统访问问题。

  • 解决方案:
    • 若无需特定用户,删除USER openjdk指令,保持使用root用户;
    • 若必须使用openjdk用户,需在Dockerfile中先创建该用户:
      RUN adduser -D openjdk
      USER openjdk
      
    • 若镜像需要Java环境,建议直接基于openjdk:alpine镜像构建,而非alpine:latest。

2. 检查Overlay2存储驱动与SELinux配置

RHEL 8上Docker使用Overlay2存储驱动时,SELinux可能限制文件系统访问,导致推送时无法读取overlay2层文件:

  • 临时关闭SELinux测试:执行setenforce 0,重新构建推送镜像,若问题解决,需调整SELinux策略:
    • 执行chcon -Rt svirt_sandbox_file_t /var/lib/docker/overlay2为Docker存储目录设置正确的SELinux上下文;
    • 永久修改可编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive(需重启系统)。

3. 强制重新构建镜像

使用--no-cache参数重新构建,避免缓存的镜像层出现异常:

docker build --no-cache -t jfrogartifactory.com/jenkins/k8stools .

内容的提问来源于stack exchange,提问作者Venu Madhav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:40