Un registry Docker éphémère qui facilite le transfert d'une image d'un système (par exemple un serveur CI/CD) à un autre (typiquement un serveur applicatif).
De l'orchestration de containers qui se veut plus abordable que Kubernetes.
Le setup initial semble quand même loin d'être simple mais c'est bien d'essayer de trouver des alternatives.
Il est possible de modifier la façon dont un container Docker résout un domaine avec l'instruction extra_hosts
.
Deep dive dans les entrailles de ce qu'est une image de container. Super intéressant et finalement pas si sorcier que ça.
Quelques exemples contiennent des coquilles, mais rien de gênant pour la compréhension.
Décortication de différentes images Docker de Node.js. C'est plein de surprises, riche en enseignements et pour autant très facile à suivre. Une saine lecture !
Des bonnes pratiques pour vos Dockerfile avec Node.
Il y a juste débat sur 10. Prefer smaller Docker base images, j'ai lu ailleurs qu'une image trop légère implique que certains outils nécessaires pour la stabilité son parfois manquants et peuvent engendrer des surprises.
Un projet qui vise à faire tourner Windows dans un container Docker.
Via https://korben.info/windows-docker-xp-11-vista-7-8-10-server-2016-2019-2022-rdp-kvm.html
"Distroless" se réfère au fait d'avoir une image dénuée du moindre outil UNIX tel que wget, sed, grep, cp, etc.
En pratique c'est compliqué parce que ces outils sont souvent nécessaire au démarrage du container pour le configurer en fonction de l'environnement dans lequel il tourne par exemple. Mais ces outils augmentent la surface d'attaque potentielle alors qu'ils ne sont pas utiles au delà des premières secondes de vie du container.
La solution se situe dans l'utilisation d'init container. Il s'agit d'un container standard qui n'aura pour but que d'effectuer cette configuration au démarrage, et il s'arrêtera ensuite.
Des conseils sur l'écriture d'un Dockerfile optimisé pour des applications Node.js.
Une alternative à Docker Desktop qui se dit plus rapide et légère. Pas testé.
Une saine lecture pour comprendre quels sont les risques de sécurités liés à l'utilisation de Docker et comment les limiter au maximum.
Le principe de limiter les privilèges au maximum et de n'ajouter que le strict nécessaire au fur et à mesure est une très bonne pratique, malheureusement trop peu souvent appliquée par manque de temps.
Un outil pour analyser une image Docker et proposer des outils pour l'optimiser.
Via https://korben.info/explorer-optimiser-images-docker-avec-dive.html
Définir des limites de mémoire et de CPU à un container Docker.
En ligne de commande:
docker run -m 512m --memory-reservation=256m --cpus=2 nginx
Avec Docker Compose:
service:
image: nginx
mem_limit: 512m
mem_reservation: 128m
cpus: 0.5
ports:
- "80:80"
Des bonnes pratiques à adopter pour créer des images Docker de vos apps Node.js.
Enfin des images Docker PHPUnit dignes de ce nom et à jour !
Quelques instructions pour améliorer vos Dockerfile pour Node.js.
# Utiliser une version de Node spécifique pour éviter les surprises lors de nouvelles releases.
FROM node:19.4-alpine
# Configurer Node pour la production.
ENV NODE_ENV production
# Sélectionner un répertoire de travail explicitement.
WORKDIR /usr/src/app
# Copier uniquement les fichiers requis pour installer les dépendances pour une meilleure gestion du cache.
COPY package*.json ./
# Installer uniquement les dépendances de production.
RUN npm ci --only=production
# alternative pour bénéficier du cache :
RUN --mount=type=cache,target=/usr/src/app/.npm \
npm set cache /usr/src/app/.npm && \
npm ci --only=production
# Éviter le mode root.
USER node
# Copier le reste du code source (uniquement les fichiers indispensables) après installation des dépendances.
COPY --chown=node:node ./src/ .
# Indiquer explicitement le port exposé par les containers qui utilisent cette image.
EXPOSE 3000
CMD ["node", "index.js"]
Au taf, on utilise Redhat. On utilise aussi Docker. Et hier un admin server m'a appris que Kubernetes et Redhat 8 vont arrêter de supporter officiellement Docker au profit de Podman. Ça remet en question les fondations de la façon dont on développe et dont on expose nos applications, donc j'étais un peu comme ça 😱
Du coup, voici un bon article qui détaille les différences entre Docker et Podman.
Un outil pour gérer Docker dans le terminal.
Via https://korben.info/interface-docker-docker-compose.html