- Modifié
Qu'est ce que Docker :
Définition selon Docker.io :
Docker est une plateforme ouverte pour les développeurs et les administrateurs réseaux pour construire, distribuer, et lancer des applications. Il s’agit d’un runtime, et d’un outil d’empaquetage. Docker permets à des applications d’être plus facilement « assemblée » et d’éliminer les problèmes entre le développement, le contrôle qualité et la production. Comme résultat, les TIC peuvent être distribuées plus rapidement, et lancer la même application, point pour point, sur des ordinateurs portables, des machines virtuelles et sur n’importe quel « Cloud ».
Concrètement
Docker est une plateforme de conteneurisation, comme expliqué par le site, utilisé pour déployer une application sur une machine, ou bien 500 sans qu’il y ait un soucis de dépendances. En pratique, Docker utilise les cgroups (à l’image d’LXC, qui faisait partie de Docker avant libcontainer), introduits dans le kernel Linux, et d’autres stacks pour isoler le conteneur et ainsi éviter les problèmes de dépendances. De plus, il a l’avantage de pouvoir être contrôlé facilement, et être plus léger qu’une machine virtuelle, n’ayant pas une couche de virtualisation du matériel (comme KVM, Xen, etc.). Il faut voir Docker, en gros, comme un outil pour rendre portable votre application, sans les contraintes d’une machine virtuelle.
Comment utiliser Docker ?
Installer la dernière version de Docker
Sur Debian/Ubuntu/Linux Mint
Ajoutez le repository virt7-testing :
Les images docker
Les conteneurs fonctionnent à l’aide d’images dans le registry, elles sont la base d’un conteneur Docker.
Elles contiennent un système de base, les applications ainsi que les fichiers de configuration.
Elles sont donc l’essence même de votre utilisation de Docker.
Il ne faut pas oublier aussi l'existence du Docker Registry Hub, qui regroupe les images qui ont été mises en ligne par la communauté.
Les Dockerfile
Les Dockerfile sont quant à eux un fichier qui expliquent comment doit être construite votre image.
Elles ont cette forme par exemple:
Le FROM indique l’image de base sur laquelle nous allons construire notre image.
Ici, on part avec l’image de Debian Jessie (8)
Le RUN indique quelles commandes nous allons lancer pour construire l’image.
Ici, nous allons lui dire de mettre à jour apt en mode silencieux: apt-get update -qq
Puis, nous lui dirons de forcer l’installation de ping : apt-get install -y ping
Ici, nous disons que dans cette image le répertoire HOME est /root, à l’image de : export HOME=/root
Le EXPOSE indique quels ports peuvent être ouverts, ou utilisés par les autres conteneurs dans cette image:
Ici, nous exposons le port 80.
Le VOLUME indique les répertoires qui peuvent être montés sur un repertoire, ou un conteneur de données, hors du conteneur.
Ici, nous indiquons la possibilité de monter le dossier /var/log
Le CMD indique la commande de base de notre image
Ici, la commande par défaut de l’image est : ping google.fr
En résumé, si vous construisez cette image, vous aurez une image qui lancera un ping sur google.fr.
Il s’agit bien sûr ici d’un exemple, sans grand intérêt ^^
Les commandes de base
docker run
> Utilisé pour lancer un conteneur
docker pull
> Utilisé pour récupérer une image
docker images
> Utilisé pour regarder les images disponibles
docker ps
> Sans argument : Utilisé pour voir les conteneurs qui sont lancées et non fermées
> Avec l’argument -a : voir tous les conteneurs qu’ils soit fermés ou non
> Avec l’argument -s : voir les conteneurs qui sont lancées et non fermées, et la taille prise dans le système.
docker commit
> Utilisé pour enregistrer des modifications dans l’image
docker build
> Utilisé pour créer une image à partir d’un Dockerfile
Concrètement comment fonctionne Docker :
Exemple donné sur Docker
Essayez avec ceci, cela explique très bien les bases de Docker que je vous ai données, avec un cas concret.
https://www.docker.com/tryit/
L'utilisation de Docker, finalement
On utilise Docker pour pouvoir déployer des applications avec une fiabilité élevée en restant assez simple d’accès si l’on utilise un système comme CoreOS pour créer un cluster avec fleetd et etcd (cf. le tuto sur l'installation de CoreOS).
Définition selon Docker.io :
Docker est une plateforme ouverte pour les développeurs et les administrateurs réseaux pour construire, distribuer, et lancer des applications. Il s’agit d’un runtime, et d’un outil d’empaquetage. Docker permets à des applications d’être plus facilement « assemblée » et d’éliminer les problèmes entre le développement, le contrôle qualité et la production. Comme résultat, les TIC peuvent être distribuées plus rapidement, et lancer la même application, point pour point, sur des ordinateurs portables, des machines virtuelles et sur n’importe quel « Cloud ».
Concrètement
Docker est une plateforme de conteneurisation, comme expliqué par le site, utilisé pour déployer une application sur une machine, ou bien 500 sans qu’il y ait un soucis de dépendances. En pratique, Docker utilise les cgroups (à l’image d’LXC, qui faisait partie de Docker avant libcontainer), introduits dans le kernel Linux, et d’autres stacks pour isoler le conteneur et ainsi éviter les problèmes de dépendances. De plus, il a l’avantage de pouvoir être contrôlé facilement, et être plus léger qu’une machine virtuelle, n’ayant pas une couche de virtualisation du matériel (comme KVM, Xen, etc.). Il faut voir Docker, en gros, comme un outil pour rendre portable votre application, sans les contraintes d’une machine virtuelle.
Comment utiliser Docker ?
Installer la dernière version de Docker
Sur Debian/Ubuntu/Linux Mint
curl -sSL https://get.docker.com/ubuntu/ | sudo sh
Sur FedoraAjoutez le repository virt7-testing :
[virt7-testing]
name=virt7-testing
baseurl=http://cbs.centos.org/repos/virt7-testing/x86_64/os/
gpgcheck=0
Puis installez Docker :
yum install docker
Sur ArchLinux
sudo pacman -S docker.io
Les bases de DockerPour information, si vous ne souhaitez pas utiliser sudo (si vous n'êtes pas root), il faut ajouter l'utilisateur au groupe docker, pour utiliser Docker
Les images docker
Les conteneurs fonctionnent à l’aide d’images dans le registry, elles sont la base d’un conteneur Docker.
Elles contiennent un système de base, les applications ainsi que les fichiers de configuration.
Elles sont donc l’essence même de votre utilisation de Docker.
Il ne faut pas oublier aussi l'existence du Docker Registry Hub, qui regroupe les images qui ont été mises en ligne par la communauté.
Les Dockerfile
Les Dockerfile sont quant à eux un fichier qui expliquent comment doit être construite votre image.
Elles ont cette forme par exemple:
FROM debian:jessie
RUN apt-get update -qq && apt-get install -y ping
ENV HOME /root
EXPOSE 80
VOLUME /var/log
CMD ping google.fr
Expliquons maintenant ce que cela signifie :Le FROM indique l’image de base sur laquelle nous allons construire notre image.
Ici, on part avec l’image de Debian Jessie (8)
Le RUN indique quelles commandes nous allons lancer pour construire l’image.
Ici, nous allons lui dire de mettre à jour apt en mode silencieux: apt-get update -qq
Puis, nous lui dirons de forcer l’installation de ping : apt-get install -y ping
Le ENV est l’équivalent du export dans bash./!\ Pour information, le -y est obligatoire quand on utilise un package manager, la construction ne prend pas en compte les entrées et se doit d’être automatisée /!\
Ici, nous disons que dans cette image le répertoire HOME est /root, à l’image de : export HOME=/root
Le EXPOSE indique quels ports peuvent être ouverts, ou utilisés par les autres conteneurs dans cette image:
Ici, nous exposons le port 80.
Le VOLUME indique les répertoires qui peuvent être montés sur un repertoire, ou un conteneur de données, hors du conteneur.
Ici, nous indiquons la possibilité de monter le dossier /var/log
Le CMD indique la commande de base de notre image
Ici, la commande par défaut de l’image est : ping google.fr
En résumé, si vous construisez cette image, vous aurez une image qui lancera un ping sur google.fr.
Il s’agit bien sûr ici d’un exemple, sans grand intérêt ^^
Les commandes de base
docker run
> Utilisé pour lancer un conteneur
docker pull
> Utilisé pour récupérer une image
docker images
> Utilisé pour regarder les images disponibles
docker ps
> Sans argument : Utilisé pour voir les conteneurs qui sont lancées et non fermées
> Avec l’argument -a : voir tous les conteneurs qu’ils soit fermés ou non
> Avec l’argument -s : voir les conteneurs qui sont lancées et non fermées, et la taille prise dans le système.
docker commit
> Utilisé pour enregistrer des modifications dans l’image
docker build
> Utilisé pour créer une image à partir d’un Dockerfile
Concrètement comment fonctionne Docker :
Exemple donné sur Docker
Essayez avec ceci, cela explique très bien les bases de Docker que je vous ai données, avec un cas concret.
https://www.docker.com/tryit/
L'utilisation de Docker, finalement
On utilise Docker pour pouvoir déployer des applications avec une fiabilité élevée en restant assez simple d’accès si l’on utilise un système comme CoreOS pour créer un cluster avec fleetd et etcd (cf. le tuto sur l'installation de CoreOS).