Il existe “pour moi” 2 façons de déployer un container sur Docker, la première et la deuxième 🙂
Voilà xD
Le déploiement de conteneurs Docker avec la commande Docker run est l’une des méthodes les plus courantes pour exécuter des applications dans un environnement conteneurisé. Voici un guide étape par étape pour expliquer comment utiliser la commande docker run pour déployer un conteneur Docker : (Avant de commencer, assurez-vous que Docker est installé sur votre système.)
L’exemple sera fait avec l’image Portainer (https://hub.docker.com/r/portainer/portainer)
Recherche d’une image : Tout d’abord, vous devez trouver l’image Docker appropriée pour l’application que vous souhaitez exécuter. Vous pouvez rechercher des images sur Docker Hub (https://hub.docker.com)
Téléchargement de l’image : Si l’image n’est pas déjà présente sur votre système, vous pouvez la télécharger en utilisant la commande docker pull, par exemple : docker pull nom_de_l'image, donc pour notre exemple:
Docker pull portainer/portainer
Une fois que l’image est téléchargée, je peux exécuter un conteneur basé sur cette image en utilisant la commande docker run. Par exemple, j’exécute le conteneur Portainer en utilisant la commande :
docker run -d -p 9000:9000 portainer/portainer.
Cela démarrera un conteneur Portainer en mode détaché, et il sera accessible via le port 9000 de ma machine.
La séquence complète serait donc :
# Téléchargez l'image Portainer depuis Docker Hub
docker pull portainer/portainer
# Exécutez un conteneur Portainer
docker run -d -p 9000:9000 portainer/portainer
Après avoir exécuté la commande docker run, le conteneur Portainer sera en cours d’exécution, et je pourrais accéder à l’interface Web de Portainer en utilisant un navigateur à l’adresse http://ipdevotremachine:9000
La commande docker pull est utilisée pour préparer l’image Docker, tandis que docker run est utilisée pour exécuter un conteneur basé sur cette image.
La solution pour moi la plus simple. Pourquoi ? Parce que je fais ce que je peux et veux (quand madame est pas là, on le sait tous….)
Je choisis de prendre cette solution dans mes déploiements de containers car il est plus simple de “voir” les paramètres et surtout imbriqués plusieurs image/containers dans une stack.
Ho bordel, il rajoute des mots “STACK”: en Docker, le terme “stack” fait référence à une collection de services définis dans un fichier Docker Compose (habituellement au format YAML) qui sont destinés à fonctionner ensemble pour déployer une application complète.
Encore un, mais il fait exprès !!!! Docker Compose : les fichiers Docker Compose décrivent la configuration des services, leurs dépendances, les réseaux, les volumes et d’autres paramètres nécessaires au déploiement de l’application.
Dans notre exemple pour l’image portainer, le docker compose serais par exemple:
version: '3.9'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- 9000:9000
volumes:
- ./etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /portainer-data:/data
Un peu d’explication ?
version: ‘3.9’: Cela indique la version du format Docker Compose utilisée. Dans ce cas, c’est la version 3.9, qui est la dernière version disponible au moment de la rédaction.
image: portainer/portainer-ce:latest : Cela spécifie l’image Docker à utiliser pour ce service, dans ce cas, il s’agit de l’image Portainer Community Edition (CE) avec la version la plus récente (latest).
container_name: portainer : Cela donne un nom explicite au conteneur, en l’occurrence, “portainer”.
restart: unless-stopped : Cette option indique que le conteneur doit redémarrer automatiquement sauf s’il est explicitement arrêté. Cela garantit que le conteneur Portainer reste actif en cas de redémarrage du système hôte.
security_opt: – no-new-privileges:true : Cela désactive la création de nouveaux privilèges pour le conteneur. Ceci renforce la sécurité en limitant ses capacités.
ports: – 9000:9000 : Cela mappe le port 9000 de l’hôte sur le port 9000 du conteneur, ce qui permet d’accéder à l’interface web de Portainer via le port 9000 de l’hôte.
volumes:
./etc/localtime:/etc/localtime:ro : Ceci synchronise le fuseau horaire de l’hôte avec le conteneur pour assurer l’heure correcte.
/var/run/docker.sock:/var/run/docker.sock:ro : Cela permet au conteneur Portainer d’interagir avec le démon Docker de l’hôte pour gérer d’autres conteneurs.
/portainer-data:/data : Cela crée un volume nommé “portainer-data” pour stocker les données de configuration et d’état de Portainer de manière persistante.