Docker run as non-root

Om een docker applicatie niet als root uit te voeren, kan in de Dockerfile een optie meegegeven worden om een gebruiker aan te maken en dan de applicatie als die gebruiker uit te voeren.

Een standaard Dockerfile die de image als root zal uitvoeren:

FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y golang-go
COPY app.go .
RUN CGO_ENABLED=0 go build app.go
CMD ["./app"]

Dezelfde Dockerfile maar nu met een specifieke gebruiker zonder root-rechten:

FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y golang-go
RUN useradd -m appuser
COPY app.go /home/appuser/
USER appuser
WORKDIR /home/appuser
RUN CGO_ENABLED=0 go build app.go
CMD ["/home/appuser/app"]