Docker Security Hardening

Use when hardening Docker containers and images.

LoopyLuci Updated 1 repo stars

File contents

Docker Security Hardening

Hardening containers and images.

Non-Root User

RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
COPY --chown=appuser:appgroup . /app

Read-Only Rootfs

docker run --read-only --tmpfs /tmp --tmpfs /var/run myapp

Drop Capabilities

docker run --cap-drop ALL --cap-add NET_BIND_SERVICE myapp

Image Scanning

docker scout quickview myapp:latest
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \\
    aquasec/trivy image myapp:latest

Secrets (don't bake in)

docker run --secret id=db_pass,src=./secrets/db_pass.txt myapp

Dockerfile

RUN apt-get update && apt-get install -y --no-install-recommends pkg \\
    && rm -rf /var/lib/apt/lists/*
FROM node:20.11.0-alpine3.18    # pin versions, not "latest"

Pitfalls

  • "latest" tags change -- pin versions
  • Env vars with secrets leak to docker history -- use --secret
  • --privileged defeats all security -- avoid

LoopyLuci/Skills/tree/main/skills/docker-security-hardening commit 9df26f7487

Frequently asked questions

npx skillmds@latest add loopyluci/docker-security-hardening