reproducible docker containers

Многие сегодня используют docker для доставки своих решений в продакшен. Обычно образы собираются с помощью т.н. Dockerfile, который может иметь следующий вид:

FROM golang:latest as builder
WORKDIR /go/src
COPY . .
RUN go build -o app
FROM alpine:latest
COPY --from=builder /go/src/app /bin/app
CMD /bin/app

Можно ли сказать что образ, полученный в результате сборки с указанным Dockerfile, будет воспроизводимым?

Нет. Эта заметка объясняет:

  • почему
  • как писать Dockerfile чтобы приблизиться к воспроизводимости
  • чем заменить Dockerfile чтобы сделать сборки воспроизводимыми