Docker — платформа контейнеризации. Упаковывает приложение со всеми зависимостями в изолированный контейнер, который одинаково работает на любой машине. Забудь про "у меня локально работает".
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o /bin/app ./cmd/server
FROM alpine:3.19
COPY --from=builder /bin/app /bin/app
CMD ["/bin/app"]
Основные команды: docker build (собрать образ), docker run (запустить контейнер), docker push (загрузить в registry). Multi-stage build — стандарт для Go: первый этап компилирует, второй берёт только бинарник. Итоговый образ — 10-20 MB вместо 1 GB.