Skip to content

Buildkit Rootless on Node:slim debian image is getting buildkitd: mkdir /run/buildkit: permission denied #6257

@mjgit007

Description

@mjgit007

I’m running buildkitd in rootless mode on top of node:slim image.

FROM node:slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    ca-certificates \
    uidmap \
    slirp4netns \
    fuse-overlayfs \
    iproute2 \
    iptables \
    && rm -rf /var/lib/apt/lists/*

ARG BUILDKIT_VERSION=v0.24.0
ARG PLATFORM_ARCH=linux-arm64
ARG ROOTLESSKIT_VERSION=v2.3.5
ARG RK_ARCH=aarch64

RUN curl -sL "https://github.com/moby/buildkit/releases/download/${BUILDKIT_VERSION}/buildkit-${BUILDKIT_VERSION}.${PLATFORM_ARCH}.tar.gz" \
    -o buildkit.tar.gz && tar -xzf buildkit.tar.gz  -C /usr/local && \
    rm buildkit.tar.gz

RUN echo "Downloading RootlessKit version ${ROOTLESSKIT_VERSION}..." && \
    curl -sL  "https://github.com/rootless-containers/rootlesskit/releases/download/${ROOTLESSKIT_VERSION}/rootlesskit-${RK_ARCH}.tar.gz" \
    -o rootlesskit.tar.gz && tar -xzf rootlesskit.tar.gz -C /usr/local/bin/ && \
    chmod +x /usr/local/bin/rootlesskit && rm rootlesskit.tar.gz

ENV NODE_UID=1000
ENV NODE_GID=1000
ENV HOME=/home/node

RUN echo "node:100000:65536" > /etc/subuid && \
    echo "node:100000:65536" > /etc/subgid && \
    chown ${NODE_UID}:${NODE_GID} /etc/subuid /etc/subgid

RUN mkdir -p /etc/buildkit 

COPY start_buildkitd.sh /usr/local/bin/start_buildkitd.sh
RUN chmod +x /usr/local/bin/start_buildkitd.sh

ENV BUILDKIT_HOST=unix:///home/node/buildkit/buildkitd.sock
ENV XDG_RUNTIME_DIR=/home/node/run

USER node
WORKDIR ${HOME}

ENTRYPOINT ["/usr/local/bin/start_buildkitd.sh"]

Below is start_buildkitd.sh code.

#!/bin/bash

set -e

SOCKET_DIR="${HOME}/buildkit"
DATA_DIR="${HOME}/.local/share/buildkit"
STATE_DIR="${HOME}/run/buildkit"
SOCKET_HOST="unix://${SOCKET_DIR}/buildkitd.sock"

mkdir -p "${SOCKET_DIR}" || { echo "Error creating socket directory. Check permissions."; exit 1; }
mkdir -p "${DATA_DIR}" || { echo "Error creating home data directory."; exit 1; }
mkdir -p "${STATE_DIR}" || { echo "Error creating state directory. Check permissions."; exit 1; }


chmod 0700 "${SOCKET_DIR}"
chmod 0700 "${STATE_DIR}"

export XDG_RUNTIME_DIR="${HOME}/run"

echo "BUILDKIT_HOST $BUILDKIT_HOST"
echo "XDG_RUNTIME_DIR $XDG_RUNTIME_DIR"
echo $(ls -ltr /etc/buildkit/buildkitd.toml)
echo "Starting buildkitd (rootless mode)..."

exec /usr/local/bin/rootlesskit /usr/local/bin/buildkitd \
    --addr="${SOCKET_HOST}" \
    --root "${DATA_DIR}" \
    "$@"

When I try to run the Image , getting below error.

docker logs my-buil
BUILDKIT_HOST unix:///home/node/buildkit/buildkitd.sock
XDG_RUNTIME_DIR /home/node/run
-rw-r--r-- 1 node node 245 Oct 1 01:10 /etc/buildkit/buildkitd.toml
Starting buildkitd (rootless mode)...
buildkitd: mkdir /run/buildkit: permission denied
creating trace controller listener
main.runTraceController
/src/cmd/buildkitd/main.go:1008
main.newController
/src/cmd/buildkitd/main.go:799
main.main.func3
/src/cmd/buildkitd/main.go:362
github.com/urfave/cli.HandleAction
/src/vendor/github.com/urfave/cli/app.go:524
github.com/urfave/cli.(*App).Run
/src/vendor/github.com/urfave/cli/app.go:286
main.main
/src/cmd/buildkitd/main.go:429
runtime.main
/usr/local/go/src/runtime/proc.go:283
runtime.goexit
/usr/local/go/src/runtime/asm_arm64.s:1223
[rootlesskit:child ] error: command [/usr/local/bin/buildkitd --addr=unix:///home/node/buildkit/buildkitd.sock --root /home/node/.local/share/buildkit] exited: exit status 1
[rootlesskit:parent] error: child exited: exit status 1

Any set up I am missing here?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions