Ash Wu
Posted on June 7, 2024
It's considered best practice to use non-root user in docker images, even if it's built from scratch image.
But in scratch image it's really empty, you can't use commands like useradd to create a non-root user.
We can use multi stage builders to achieve this.
FROM ubuntu:latest
RUN useradd -u 10001 scratchuser
FROM scratch
COPY dosomething /dosomething
COPY --from=0 /etc/passwd /etc/passwd
USER scratchuser
ENTRYPOINT ["/dosomething"]
How can we verify it? In order to verify, we need id
command to check if the user is set correctly. We can copy the commands from busybox
.
FROM busybox:1.35.0-uclibc as busybox
COPY --from=busybox /bin/sh /bin/sh
COPY --from=busybox /bin/id /bin/id
And now we can use docker exec
to run the id
command to verify if it works.
💖 💪 🙅 🚩
Ash Wu
Posted on June 7, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
opensource Exploring Podman and Beyond: Open Source Alternatives to Docker for Secure Containerization
November 28, 2024
spring Spring Boot with Docker and Kubernetes: Containerizing and Deploying Your Java Applications
October 30, 2024