DÉCOUVERTE DE DOCKER

DÉCOUVERTE DE DOCKER

1. Présentation de docker

Docker est un logiciel open source (sous licence Apache 2.0) et un service en ligne optionnel (Docker.io) permettant de gérer des conteneurs (« dockers »). C’est un produit développé par la société de même nom. Initialement développé par un ingénieur français (Solomon HYKES), le produit a été dévoilé en mars 2013.

Docker est une application disponible aussi bien sous Windows que sous Linux. Il va vous permettre d’empaqueter d’autres applications et leurs dépendances dans un conteneur que l’on pourra ensuite déplacer et faire fonctionner sur n’importe qu’elle serveur fonctionnant sous Linux ou sous Windows (les conteneurs Linux vers des Linux et des Windows vers des Windows). Contrairement aux solutions de machines virtuelles (VM) classiques qui comprennent un système hôte (« guest OS ») et les librairies/applications utilisées par le ‘‘guest OS’’ ou l’application finale, les conteneurs ne contiennent, au maximum, que les applications/librairies finales. Cela permet donc d’avoir des conteneurs qui sont moins gourmands en ressource (HDD – CPU – RAM) que des machines virtuelles.

2

De plus une copie d’un conteneur qui ne change que la partie application ne contiendra que les différences par rapport au conteneur initial. Plusieurs conteneurs peuvent être des copies du même conteneur parent, ce qui vous permet de faire un gros gain en espace.

3

Le système qui héberge les conteneurs (l’hôte) est ainsi géré directement par le Docker Engine (en vert dans le premier schéma plus haut). Nous avons ainsi une mutualisation qui permet de lancer les conteneurs de manière presque instantanée, aussi rapide que le lancement d’une simple application. Vu que les conteneurs n’ont pas de système d’exploitation propre et utilisent celui de l’hôte, il n’y a plus de phase de démarrage et d’initialisation du système d’exploitation.

Il faut garder à l’esprit que même si l’on n’est pas dans une machine virtuelle, on dispose tout de même d’un environnement isolé (processus, système de fichier, ports réseau). L’utilisateur n’a qu’à se préoccuper que de ce qu’il veut virtualiser (les applications/services) et ne s’occupe pas du reste. Mais il est aussi possible de configurer manuellement la charge (IPs, ports, ram, processeur …) des conteneurs. La taille des conteneurs est considérablement réduite et ils sont aussi portables d’une machine docker a une autre sans configuration particulière.

2. Installation de docker

Pour faire fonctionner correctement la version actuelle de docker sous Linux, il est conseillé d’avoir un système 64bits et un kernel en version 3.10 minimum. Notre Debian 8 en version 64 bits possède toutes ces caractéristiques.

ouvrir la liste des dépôts

[pastacode lang= »bash » manual= »nano%C2%A0%20%2Fetc%2Fapt%2Fsources.list » message= » » highlight= » » provider= »manual »/]

Pensez à ajouter si vous ne les avez pas déjà, les dépôts suivants dans le fichier sources.

[pastacode lang= »bash » manual= »deb%20http%3A%2F%2Fftp.debian.org%2Fdebian%20jessie-backports%20main%0Adeb-src%20http%3A%2F%2Fftp.debian.org%2Fdebian%20jessie-backports%20main%0Adeb%20http%3A%2F%2Fftp.debian.org%2Fdebian%20jessie%20main%20contrib%0Adeb-src%20http%3A%2F%2Fftp.debian.org%2Fdebian%20jessie%20main%20contrib%20″ message= » » highlight= » » provider= »manual »/]

Ensuite taper les commandes suivantes pour mettre à jour la liste de paquet et installer le paquet docker.

[pastacode lang= »bash » manual= »sudo%20apt%20update%C2%A0%0Asudo%20apt%20install%20docker.io » message= » » highlight= » » provider= »manual »/]

NB: Toutes les manipulations faites avec les commandes docker doivent être faites avec le compte administrateur ayant le maximum de droit root. Ou alors vous pouvez ajouter votre compte utilisateur normal au groupe docker pour ne pas avoir à utiliser le compte root ou la commande sudo a tous les coups.

Maintenant pour vérifier que tout fonctionne correctement taper cette commande qui devrait lancer le conteneur hello-world qui affiche un message dans l’invite de commande avant de s’arrêter.

Vous devriez avoir ceux-ci comme résultat

[pastacode lang= »bash » manual= »sudo%20docker%20run%20hello-world » message= » » highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »root%40sw%3A%2Fhome%2Farsene%23%20sudo%20docker%20run%20hello-world%0A%0AHello%20from%20Docker!%0A%0AThis%20message%20shows%20that%20your%20installation%20appears%20to%20be%20working%20correctly.%0A%0A%0A%0ATo%20generate%20this%20message%2C%20Docker%20took%20the%20following%20steps%3A%0A%0AThe%20Docker%20client%20contacted%20the%20Docker%20daemon.%0AThe%20Docker%20daemon%20pulled%20the%20%22hello-world%22%20image%20from%20the%20Docker%20Hub.%0AThe%20Docker%20daemon%20created%20a%20new%20container%20from%20that%20image%20which%20runs%20the%0A%C2%A0%C2%A0%C2%A0%20executable%20that%20produces%20the%20output%20you%20are%20currently%20reading.%0A%0AThe%20Docker%20daemon%20streamed%20that%20output%20to%20the%20Docker%20client%2C%20which%20sent%20it%0A%C2%A0%C2%A0%C2%A0%20to%20your%20terminal.%0A%0A%0A%0ATo%20try%20something%20more%20ambitious%2C%20you%20can%20run%20an%20Ubuntu%20container%20with%3A%0A%0A%C2%A0%24%20docker%20run%20-it%20ubuntu%20bash%0A%0A%0A%0AShare%20images%2C%20automate%20workflows%2C%20and%20more%20with%20a%20free%20Docker%20Hub%20account%3A%0A%0A%C2%A0https%3A%2F%2Fhub.docker.com%0A%0A%0A%0AFor%20more%20examples%20and%20ideas%2C%20visit%3A%0A%0A%C2%A0https%3A%2F%2Fdocs.docker.com%2Fengine%2Fuserguide%2F%0A%0A%0Aroot%40sw%3A%2Fhome%2Farsene%23%0A%0A » message= » » highlight= » » provider= »manual »/]

Maintenant nous pouvons procéder à la configuration de nos conteneurs. Si vous n’avez aucun résultat rassurez-vous que le service docker est bien lancé avec la commande :

[pastacode lang= »bash » manual= »service%20docker%20status » message= » » highlight= » » provider= »manual »/]

Elle vous affichera l’état du service docker. S’il n’est pas lancé, démarrez-le avec la commande :

[pastacode lang= »bash » manual= »service%20docker%20start » message= » » highlight= » » provider= »manual »/]

3. Configurer des conteneurs sur docker

Mise en service d’un conteneur : NGINX

On commence par télécharger le conteneur :

[pastacode lang= »bash » manual= »sudo%20docker%20pull%20nginx » message= » » highlight= » » provider= »manual »/]

Ensuite on lance le conteneur, j’ai créé un dossier Webstack : /data/webstack/www qui va contenir les fichiers de configuration de mon serveur et les fichiers de configurations des sites web.

[pastacode lang= »bash » manual= »sudo%20docker%20run%20–name%20webstack_nginx%20-d%20-p%2080%3A80%20-p%20443%3A443%20-v%20%2Fdata%2Fwebstack%2Fwww%3A%2Fusr%2Fshare%2Fnginx%2Fhtml%2F%C2%A0%20nginx » message= » » highlight= » » provider= »manual »/]

Explication :

–name permet de donner un nom à notre conteneur

-d permet de lancer notre conteneur en tâche de fond.

-p permet de spécifier les ports ouverts Port-Hôte : Port-Conteneur  c’est-à-dire les ports de l’hôte qui seront matché avec certains ports du conteneur.

-v permet de monter un dossier ou un fichier de l’hôte vers le conteneur. Ce fichier ou dossier sera vu par le conteneur comme le fichier / dossier de départ.

/data/webstack/www : répertoire de l’hôte ou seront hébergé les sites web que nous allons créer

     /usr/share/nginx/html/ : répertoire par défaut NGINX où sont hébergé les sites.

NGINX est tout simplement le nom de l’image docker que l’on veut démarrer.

Avec la commande précédente le répertoire  /data/webstack/www  est monté en tant que répertoire  /usr/share/nginx/html/ dans notre conteneur. Le conteneur a donc un accès en lecture et en écriture à ce répertoire et nous aussi depuis la machine hôte nous pouvons modifier le contenu de ce répertoire.

Si vous ne souhaitez pas que le conteneur est un accès en écriture, mais uniquement en lecture au dossier ou au fichier que vous allez lui passer en paramètre (généralement utilisé pour des fichiers de conf. Ou même pour des sites web en fonction de vos besoins), il vous faut juste ajouter le paramètre :ro à la fin du chemin.

[pastacode lang= »bash » manual= »sudo%20docker%20run%20–name%20webstack_nginx%20-d%20-p%2080%3A80%20-p%20443%3A443%20-v%20%C2%A0%2Fdata%2Fwebstack%2Fwww%3A%2Fusr%2Fshare%2Fnginx%2Fhtml%2F%3Aro%C2%A0%20nginx » message= » » highlight= » » provider= »manual »/]

:ro :  Read Only : il permet de monter le répertoire en mode lecture seul pour le conte

NB : Si nous n’avions pas encore téléchargé l’image nginx avec la commande docker pull, docker aurait téléchargé cette image pour nous directement avant de la monter.

Ici on peut utiliser le répertoire /usr/share/nginx/html parce qu’il a été déclaré en tant que volume dans le Dockerfile de l’image Nginx.

Liaison entre 2 conteneurs 

PhpMyAdmin et MySql

On lance tous d’abord le 1er conteneur celui auquel le second va se lier conteneur MySQL :

[pastacode lang= »bash » manual= »sudo%20docker%20run%20–name%20webstack_mysql%20-d%20-v%20%2Fdata%2Fwebstack%2Fbdd%2F%3A%2Fvar%2Flib%2Fmysql%20-e%20MYSQL_ROOT_PASSWORD%3Ddocker2016%20mysql » message= » » highlight= » » provider= »manual »/]

Explication :

-e MYSQL_ROOT_PASSWORD=docker2016   on fixe la variable MYSQL_ROOT_PASSWORD qui contient le mot de passe qu’on décide d’attribuer au compte root de MySql au démarrage.

Ici, vous pouvez remarquer que nous n’avons spécifié aucun port pour la communication extérieure cela veut dire que seuls la machine hôte et les conteneurs qui sont liés au conteneur MySQL pourront communiquer avec lui (ceux-ci est partiellement vrais, car nous verrons que tous les conteneurs peuvent communiquer entre eux par défaut via leur IP. Mais cette fonctionnalité peux être désactivé en passant le paramètre –icc a false cette manipulation est expliquée dans le chapitre sur les bonnes pratiques de docker). Ce qui peut s’avérer être un gros avantage au niveau sécurité.

Ensuite on lance le conteneur PhpMyAdmin et on le relit au conteneur MySql.

[pastacode lang= »bash » manual= »sudo%20docker%20run%20–name%20webstack_phpmyadmin%20-d%20–link%20webstack_mysql%3Adb%C2%A0%20-p%202000%3A80%20phpmyadmin%2Fphpmyadmin » message= » » highlight= » » provider= »manual »/]

Explication :

–link webstack_mysql:db : il créer un lien entre le conteneur webstack_mysql (celui que nous avons créé précédemment avec MySQL) et PhpMyAdmin. PhpMyAdmin verra le nom d’hôte db dans son fichier hôte pointé sur le conteneur  webstack_mysql. Dans ce cas-ci, veillez à bien spécifier db sinon cela pourrait ne pas fonctionner. Bien évidemment, si vous avez spécifié un autre nom à MySql au lieu de (webstack_mysql) vous devez spécifier le bon nom.

Connecté vous ensuite sur : votre_ip :2000     En utilisant le compte root et le mot de passe que vous avez précédemment mis dans mysql.

5

Mysql et WordPress

[pastacode lang= »bash » manual= »docker%20run%20–name%20webstack_wordpress%20–link%20webstack_mysql%3Amysql%20-v%20%2Fdata%2Fwebstack%2Fwordpress%2F%3A%2Fvar%2Fwww%2Fhtml%2F%20-p%203001%3A80%20-d%20wordpress » message= » » highlight= » » provider= »manual »/]

Dans ce cas il utilisera les options par défaut. Pour configurer vous-même les variables utilisées, vous devez faire :

[pastacode lang= »bash » manual= »docker%20run%20–name%20webstack_wordpress_2%C2%A0%20–link%20webstack_mysql%3Amysql%C2%A0%20-p%203006%3A80%20-e%20WORDPRESS_DB_USER%3Dwordpress1%20-e%20WORDPRESS_DB_PASSWORD%3Dwordpress1%20-e%20WORDPRESS_DB_NAME%3Dwordpress1%20-d%C2%A0%20wordpress » message= » » highlight= » » provider= »manual »/]

Vous devez bien évidemment avoir créé sur votre serveur MySql l’utilisateur wordpress1 et la base de données wordpress1.

4. Arrêter / Supprimer des conteneurs et des images docker

Lorsque vous utilisé docker, différent cas de figure peuvent se poser.

  • Lister les conteneurs en court d’exécution

[pastacode lang= »bash » manual= »sudo%20docker%20ps » message= » » highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »root%40sw%3A%2Fhome%2Farsene%23%20docker%20ps%0A%0ACONTAINER%20ID%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20IMAGE%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0COMMAND%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20CREATED%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20STATUS%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20PORTS%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20NAMES%0A%0A8dbb57d6f332%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20wordpress%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22%2Fentrypoint.sh%20apac%C2%A0%C2%A0%204%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Up%204%20days%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2080%2Ftcp%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_wordpress_atomit%0A6c0f15270888%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20wordpress%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22%2Fentrypoint.sh%20apac%C2%A0%C2%A0%205%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Up%205%20days%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2080%2Ftcp%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_wordpress_1%0A39ee17373646%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20phpmyadmin%2Fphpmyadmin%3Alatest%C2%A0%C2%A0%20%22%2Frun.sh%20phpmyadmin%22%C2%A0%C2%A0%209%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%C2%A0Up%209%20days%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2080%2Ftcp%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_phpmyadmin%0A0aac8e893ab1%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20mysql%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22docker-entrypoint.s%C2%A0%C2%A0%209%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Up%209%20days%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%203306%2Ftcp%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_mysql%0A%0Aroot%40sw%3A%2Fhome%2Farsene%23″ message= » » highlight= » » provider= »manual »/]

  • Vous souhaitez stopper un conteneur docker temporairement.

Docker stop ID_conteneur ou Nom_Conteneur :

[pastacode lang= »bash » manual= »sudo%20docker%20stop%20webstack_wordpress_1″ message= » » highlight= » » provider= »manual »/]

[pastacode lang= »bash » manual= »root%40sw%3A%2Fhome%2Farsene%23%20docker%20stop%20webstack_wordpress_1%0Awebstack_wordpress_1″ message= » » highlight= » » provider= »manual »/]

Cette commande arête juste le serveur donc si vous faite un sudo docker ps pour lister les images en cours vous ne la verrez plus. Mais l’instance existe toujours la preuve c’est que si vous tentez de lancer un conteneur avec le même nom docker va refuser.

Pour voire la liste de tous les conteneurs docker (même ceux qui sont arrêtés), vous faite

[pastacode lang= »bash » manual= »sudo%20docker%20ps%20-a » message= » » highlight= » » provider= »manual »/]

Cette commande est aussi particulièrement utilise lorsqu’un conteneur refuse de se lancer (il faut noter que docker auras créé tout de même une instance).

[pastacode lang= »bash » manual= »root%40sw%3A%2Fhome%2Farsene%23%20docker%20ps%20-a%0A%0ACONTAINER%20ID%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20IMAGE%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20COMMAND%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20CREATED%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20STATUS%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20PORTS%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20NAMES%0A%0A94f49f7fcf81%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20hello-world%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22%2Fhello%22%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2011%20minutes%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Exited%20(0)%2011%20minutes%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20desperate_jones%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%0A8dbb57d6f332%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20wordpress%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22%2Fentrypoint.sh%20apac%C2%A0%C2%A0%204%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Up%204%20days%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%2080%2Ftcp%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_wordpress_atomit%0A6c0f15270888%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20wordpress%3Alatest%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%22%2Fentrypoint.sh%20apac%C2%A0%C2%A0%205%20days%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20Exited%20(0)%202%20minutes%20ago%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20webstack_wordpress_1%C2%A0%C2%A0%C2%A0%C2%A0″ message= » » highlight= » » provider= »manual »/]

  • Pour supprimer un conteneur docker qui a été lancé, il faut :

Arrêter le conteneur et ensuite taper la commande :  sudo docker rm ID_conteneur ou nom

[pastacode lang= »bash » manual= »root%40sw%3A%2Fhome%2Farsene%23%20sudo%20docker%20rm%20webstack_wordpress_1%0Awebstack_wordpress_1″ message= » » highlight= » » provider= »manual »/]

Pour supprimer l’ensemble des conteneurs docker qui sont à l’arrêt :

[pastacode lang= »bash » manual= »docker%20rm%C2%A0%20%24(docker%20ps%20-a%C2%A0%20-q%20–filter%20%22status%3Dexited%22) » message= » » highlight= » » provider= »manual »/]

Stopper tous les conteneurs qui tourne d’un coup :

[pastacode lang= »bash » manual= »sudo%20docker%20stop%20%24(docker%20ps%20-q) » message= » » highlight= » » provider= »manual »/]

Lancer ensemble tous les conteneurs docker qui ont été stoppés :

[pastacode lang= »bash » manual= »%C2%A0sudo%20docker%20start%20%24(docker%20ps%20-q) » message= » » highlight= » » provider= »manual »/]

Pour se connecter à l’interface de commande d’un conteneur par exemple pour faire des mises à jour ou installer un paquet :

[pastacode lang= »bash » manual= »%C2%A0sudo%20docker%20exec%20-it%20webstack_nginx%20%2Fbin%2Fbash%C2%A0″ message= » » highlight= » » provider= »manual »/]

10

Pour vous déconnecter un simple exit suffit

11

NB : Lorsque vous stoppez un conteneur, les mises à jour que vous aviez installées dessus vont rester. Lorsque vous allez le relancer, vous retrouverez les mises à jour. Par contre si vous supprimez un conteneur sans avoir créé une image avec ce dernier afin de sauvegarder vos modifications vous perdez automatiquement toutes les modifications que vous aviez apportées au conteneur.

5. Liste des commandes DOCKER CLI

Je vais rapidement lister les commandes Docker disponibles, en expliquant leurs rôles (informations issues des manpages Docker). Vous pouvez obtenir ces informations depuis l’invite de commande en tapant : docker -h (résultat en anglais). Vous pouvez aussi obtenir les informations sur une commande particulière en tapant : docker [commande] –help

[pastacode lang= »bash » manual= »docker%20attach%20%3A%20Joindre%20%C3%A0%20un%20conteneur%20en%20cours%20d%E2%80%99ex%C3%A9cution%0Adocker%20build%20%3A%20Construire%20une%20nouvelle%20image%20%C3%A0%20partir%20du%20code%20source%20dans%20le%20PATH%0Adocker%20commit%20%3A%20Cr%C3%A9er%20une%20nouvelle%20image%20%C3%A0%20partir%20des%20changements%20d%E2%80%99un%20conteneur%0Adocker%20cp%20%3A%20Copier%20des%20fichiers%20ou%20des%20dossiers%20depuis%20le%20PATH%20d%E2%80%99un%20conteneur%20vers%20le%20HOSTDIR%20ou%20vers%20STDOUT%0Adocker%20create%20%3A%20Cr%C3%A9er%20un%20nouveau%20conteneur%0Adocker%20diff%20%3A%20Inspectez%20changements%20sur%20le%20syst%C3%A8me%20de%20fichiers%20d%E2%80%99un%20conteneur%0Adocker%20events%20%3A%20Obtenir%20des%20%C3%A9v%C3%A9nements%20en%20temps%20r%C3%A9el%20depuis%20le%20serveur%0Adocker%20exec%20%3A%20Ex%C3%A9cuter%20une%20commande%20dans%20le%20conteneur%20en%20cours%20d%E2%80%99ex%C3%A9cution%0Adocker%20export%20%3A%20Exporter%20le%20contenu%20d%E2%80%99un%20syst%C3%A8me%20de%20fichiers%20d%E2%80%99une%20archive%20tar%20vers%20STDOUT%0Adocker%20history%20%3A%20Afficher%20l%E2%80%99historique%20d%E2%80%99une%20image%20Docker%0Adocker%20images%20%3A%20Lister%20des%20images%0Adocker%20import%20%3A%20Cr%C3%A9er%20une%20image%20de%20syst%C3%A8me%20de%20fichiers%20vide%20et%20y%20importer%20le%20contenu%20d%E2%80%99une%20l%E2%80%99archive%20(.tar%2C%20.tar.gz%2C%20.tgz%2C%20.bzip%2C%20.tar.xz%2C%20.txz)%2C%20puis%20%C3%A9ventuellement%20y%20ajouter%20une%20%C3%A9tiquette%20(tag)%0Adocker%20info%20%3A%20Afficher%20l%E2%80%99ensemble%20des%20informations%20syst%C3%A8me%0Adocker%20inspect%20%3A%20Afficher%20les%20informations%20de%20bas%20niveau%20sur%20un%20conteneur%20ou%20une%20image%20Docker%0Adocker%20kill%20%3A%20Tuer%20un%20conteneur%20en%20cours%20d%E2%80%99ex%C3%A9cution%20en%20utilisant%20SIGKILL%20ou%20un%20signal%20sp%C3%A9cifi%C3%A9%0Adocker%20load%20%3A%20Chargez%20une%20image%20%C3%A0%20partir%20d%E2%80%99une%20archive%20tar%20sur%20STDIN%0Adocker%20login%20%3A%20Inscrivez-vous%20ou%20connectez-vous%20%C3%A0%20le%20Docker%20Register%20(HUB)%0Adocker%20logout%20%3A%20D%C3%A9connexion%20du%20Docker%20Register%20(HUB)%0Adocker%20logs%20%3A%20Fetch%20des%20journaux%20d%E2%80%99un%20conteneur%0Adocker%20pause%20%3A%20Mettre%20en%20pause%20tous%20les%20processus%20dans%20un%20conteneur%0Adocker%20port%20%3A%20Liste%20les%20ports%20d%E2%80%99un%20conteneur%2C%20ou%20rechercher%20les%20ports%20%E2%80%9Cpublic%E2%80%9D%20nat%C3%A9%20vers%20un%20PRIVATE_PORT%0Adocker%20ps%20%3A%20Liste%20de%20conteneurs%0Adocker%20pull%20%3A%20R%C3%A9cup%C3%A9rer%20une%20image%20ou%20un%20repository%20%C3%A0%20partir%20du%20Docker%20HUB%0Adocker%20push%20%3A%20Publier%20une%20image%20ou%20un%20repository%20vers%20le%20Docker%20HUB%0Adocker%20rename%20%3A%20Renommer%20un%20conteneur%20Docker%0Adocker%20restart%20%3A%20Red%C3%A9marrez%20un%20conteneur%20en%20cours%20d%E2%80%99ex%C3%A9cution%0Adocker%20rm%20%3A%20Supprimer%20une%20ou%20plusieurs%20conteneurs%0Adocker%20rmi%20%3A%20Supprimer%20une%20ou%20plusieurs%20images%0Adocker%20run%20%3A%20Ex%C3%A9cuter%20une%20commande%20dans%20un%20nouveau%20conteneur%0Adocker%20save%20%3A%20Enregistrer%20une%20image%20dans%20une%20archive%20tar%20(streaming%20vers%20STDOUT%20par%20d%C3%A9faut)%0Adocker%20search%20%3A%20Rechercher%20des%20images%20sur%20le%20Docker%20Hub%0Adocker%20start%20%3A%20Lancer%20un%20ou%20plusieurs%20conteneurs%20arr%C3%AAt%C3%A9s%0Adocker%20stats%20%3A%20Afficher%20l%E2%80%99utilisation%20des%20ressources%20d%E2%80%99un%20ou%20plusieurs%20conteneurs%20sous%20la%20forme%20d%E2%80%99un%20flux%0Adocker%20stop%20%3A%20Arr%C3%AAtez%20un%20conteneur%20en%20cours%20d%E2%80%99ex%C3%A9cution%20en%20envoyant%20SIGTERM%20et%20SIGKILL%20apr%C3%A8s%20une%20p%C3%A9riode%20de%20gr%C3%A2ce%0Adocker%20tag%20%3A%20%C3%89tiqueter%20une%20image%20dans%20un%20repository%0Adocker%20top%20%3A%20Afficher%20les%20processus%20en%20cours%20d%E2%80%99ex%C3%A9cution%20d%E2%80%99un%20conteneur%0Adocker%20unpause%20%3A%20R%C3%A9activer%20tous%20les%20processus%20dans%20un%20conteneur%0Adocker%20version%20%3A%20Afficher%20les%20informations%20de%20version%20Docker%0Adocker%20wait%20%3A%20Bloquer%20jusqu%E2%80%99%C3%A0%20l%E2%80%99arr%C3%AAt%20du%20conteneur%2C%20puis%20imprime%20son%20code%20de%20sortie » message= » » highlight= » » provider= »manual »/]

6. Webographie

Wanadev

Le Blog Nicolargo

 

joel

2 commentaires

Les Bases Sur DOCKER – ATOMIT Publié le16 h 55 min - 10 octobre 2016

[…] DÉCOUVERTE DE DOCKER […]

    joel Publié le16 h 59 min - 10 octobre 2016

    Merci

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.