За время работы с Docker собралось немного мелочей, которые я и хочу здесь собрать.


Сборка образа

docker build -t $SERVICE_NAME:$SERVICE_VERSION .

Multi-stage Dockerfile

Docker с версии 17.05 умеет multi-stage Dockerfile. Это порой значительно уменьшает размер конечного образа. Пример:

FROM golang AS builder
ADD . /go/src/my-service/
RUN cd /go/src/my-service/ && go get .
RUN go install my-service

FROM alpine
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
COPY --from=builder /go/bin/my-service /bin/my-service
ENTRYPOINT /bin/my-service

Публикация образа в registry:

  • docker tag $SERVICE_NAME:$SERVICE_VERSION registry.example.com/$SERVICE_NAME:$SERVICE_VERSION
  • docker push registry.example.com/$SERVICE_NAME:$SERVICE_VERSION

Nexus начиная с версии 3 поддерживает хранение docker-реестра. Из приятных фишечек - авторизация и о, роботы, возможность удалять образы!

Удалить все контейнеры со статусом "Exited"

docker rm -f $(docker ps -a -q --filter "status=exited")