Tous les systèmes Linux ont un système dit `init`, correspondant au processus avec le premier PID (1). Ce processus est le parent de tous les autres, et doit transmettre les signaux qu'il reçoit à ses enfants (par exemple, un signal de terminaison).
Quand vous lancez un conteneur avec un script Shell ou Bash comme entrypoint, ce script a le PID 1.
S'il démarre ensuite l'application, il ne transmettra pas le signal de terminaison à ses enfants.
Le souci, c'est qu'un `docker stop` enverra un signal `SIGTERM` au script d'entrypoint, mais il ne sera pas transmis au service en lui-même, qui se terminera brutalement par un `SIGKILL` après expiration du timeout.
Docker Compose, depuis la version 3.7, adresse ce problème avec une directive très simple :
```
services:
exemple:
init: true
```
[Plus d'informations sur ce lien](https://hynek.me/articles/docker-signals/) et [sur la documentation de Compose](https://docs.docker.com/compose/compose-file/#init)
## Réseaux
L'idée est de mettre dans des réseaux séparés les services n'ayant pas besoin de communiquer entre eux, pour améliorer la sécurité de l'infrastructure.