Aller au contenu principal

Docker - Les images

Les images Docker


Chaque layer correspond à une information qui peut être mise en cache

Quel est l'intérêt ?

Quelles sont les impacts en terme de construction de Dockerfiles ?

Savez-vous ce que fait la commande docker commit ? En quoi est-elle utile ?


Dockerfile

Voici un Dockerfile. Qu'en pensez-vous ?

ARG FROM=alpine:3.17.7
FROM ${FROM}

ENV APP="/app"
ENV USER="nonroot"
ENV AWS_KEY="fd60687f-40d0-1b5be705b21e-4ba1-9fee"

LABEL org.opencontainers.image.authors='author@company.org' \
org.opencontainers.image.url='https://tool.company.org' \
org.opencontainers.image.documentation='https://app.readthedocs.org' \
org.opencontainers.image.source='https://github.com/compagny/tool' \
org.opencontainers.image.vendor='The Company' \
org.opencontainers.image.licenses='Apache-2.0'

RUN apk --update --no-cache add nginx=1.22.1-r1
RUN adduser -h ${APP} -D ${USER}
WORKDIR ${APP}
COPY . .

EXPOSE 80
VOLUME /data

HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1

ENTRYPOINT ["./entrypoint.sh"]
CMD ["nginx"]


Build = Dockerfile -> Image

La commande pour construire une image est :

docker build [-t <tag:version>] [-f <chemin_du_dockerfile>] <contexte_de_construction>

Observez l'historique de construction de l'image avec docker image history <image>


Installer l'outil Dive pour analyser en détail la construction d'une image

cf. https://github.com/wagoodman/dive