An open API service indexing awesome lists of open source software.

https://github.com/camara94/decouvrir-docker

Partez à la découverte de Docker, une solution de virtualisation permettant de faire tourner des applications dans des conteneurs indépendants.
https://github.com/camara94/decouvrir-docker

containers docker

Last synced: 2 months ago
JSON representation

Partez à la découverte de Docker, une solution de virtualisation permettant de faire tourner des applications dans des conteneurs indépendants.

Awesome Lists containing this project

README

          

# Decouvrir-docker
Partez à la découverte de Docker, une solution de virtualisation permettant de faire tourner des applications dans des conteneurs indépendants.

## Résumé du cours
Partez à la découverte de Docker, une solution de virtualisation permettant de faire tourner des applications dans des conteneurs indépendants. Dans cette formation pour administrateurs et chefs de projet, Samir Lakhdari vous fait découvrir les principes et le fonctionnement de Docker. Vous apprendrez à exécuter des conteneurs à partir d'images d'applications et vous verrez également comment créer vos propres images. Vous aborderez aussi le stockage de données dans des volumes persistants, la communication entre conteneurs, le réseau, la distribution d'images et, bien entendu, la sauvegarde. À la fin de cette formation, vous serez capable d'exécuter des conteneurs Docker avec des applications tierces ou avec vos propres applications.

# Machine Virtuelle VS Docker
![Machine Virtuelle vs Docker](images/machinevirtuelvsdocker.png)

## Architecture Docker
![architecture docker](images/architecturedocker.png)

### Moteur Docker (Engine)
![docker engine](images/docker-engine.png)
### Docker Client
![docker client](images/docker-client.png)
### Docker Image
![docker image](images/docker-image.png)
### Docker Conteneur
![docker conteneur](images/docker-conteneur.png)
### Docker Registre (Librairie d'images)
![docker registre](images/docker-registre.png)

## Appréhender le fonctionnement de Docker
![fonctionnement docker](images/architecturedocker-fonctionnement.png)

## Installer Docker
Après avoir decouvrir Docker, nous allons l'installer selon notre plateforme à travers ce lien ci-dessous:
[Installer Docker](https://docs.docker.com/engine/install/)

## Quelques commande docker


docker search nomImage # Pour chercher une image
docker pull nomImage # pour telechager une image
docker images # pour voir la liste des image en local
docker rmi -f nomImage # pour supprimer une image
docker rm -f $(docker ps -a -q) # pour supprimer également une image

## Explorer Docker Hub
Vous pouvez également explorer docker hub pour chercher des images et télécharger en local pour vos utilisations personnelles à travers ce lien ci-dessous:
[Docker Hub](https://hub.docker.com)
## Appréhender la Docker
* pour afficher le manuel de la commande docker, on utilise l'option **--help**:
docker --help | more![docker help](images/dokerhelp.png)
* pour afficher l'aide une commande de context on utilise également l'option **--help**:
docker container --help | more![docker context help](images/dokercontexthelp.png)

## Le Cycle de vie d'un conteneur docker
### Le Cycle de vie de base d'un conteneur docker
![cycle de vie de base d'un conteneur](images/cycledeviedebasedunconteneur.png)
### Le Cycle de vie de avancé d'un conteneur docker
![cycle de vie de avancé d'un conteneur](images/cycledevieavancedunconteneur.png)

## Exécuter un conteneur docker
* docker run nomImage
* docker run -ti nomImage pour l'exécuter en mode interactif
* docker ps -a pour afficher les conteneurs la lancé
* [Ressource pour configurer mongodb sur mon VPS](https://www.bmc.com/blogs/mongodb-docker-container/)

## Exécution en mode attaché et detaché
* docker run --name=mongodb --hostnamehost01 -it mong
* pour verifier le nom hostname
* pour arrêter un conteneur exit
* mode d'exécution en arrière plan on ajoute l'option **-d** ou **--detach** ex:
docker run -d -it mongo
* on peut aussi balancer d'un mode en un autre avec les combinaisions suivantes:

* on peut vérifier les log d'un conteneur en arrière plan docker logs nomImage

## Inspecter un conteneur
* on va lancer d'abord un conteneur pour pouvoir effectuer des des inspections.

docker run -d -P --name=web03 --hostname=cont03 nginx
* primièrement nous allons lancer la commande docker inspect web03
![inspect un conteneur](images/docker-inspect.png)
* on peut également extraire une partie ou un attribut d'un champs avec la commande suivante:

docker inspect --format='{{.state.Status}} web03
![Docker inspect state](images/docker-inspect-state.png)

* autre par exemple:

docker inspect --format='{{.NetworkSettings.IPAddres}}' web03
![ipaddress](images/docker-inspect-networksettings.png)

* une dernière possibilité est:

docker inspect --format='{{json .State}}' web03
![inpect state](images/docker-inspect-state2.png)

## Comment lister les conteneur docker
* pour lister les conteneurs lancés

docker ps
![docker ps](images/dockerps.png)
* pour lister tous les conteneurs même ceux qui sont arrêtes

docker ps -a
![docker ps -a](images/dockerpsa.png)
* pour voir les n derniers conteneurs

docker ps --last 2
![n dernier](images/ndernierconteneurs.png)

* afficher uniquement les ID des conteneurs

docker ps -q
![dokcer ps -q](images/psq.png)
* les options de filtrage

docker ps -a --filter name=web
![docker ps -a --filter name=web](images/filter.png)
docker ps -a --filter status=exited
![docker ps -a --filter name=web](images/exited.png)
* lorsqu'on essaye d'arrêter un conteneur en cours d'exécution on obtient une erreur

* docker rm web03
![erreur d'arrêt](images/erreurda.png)
* pour remedier à ce problème, on exécute cette commande

docker rm -f web03
![arrêt avec -f](images/arret.png)
* pour supprimer tous les conteneurs arrêtés

docker rm $(docker ps -aq --filter status=exited)
![tous les conteneurs arrêtés](images/arrets.png)
## Comprendre une image docker
### C'est quoi une couche docker ?
![comprendre une image](images/couche.png)
### Qu'est ce qu'une image docker
Une image est constituée de un plusieurs couche docker
#### Comment créer une image
![créer une image](images/creeruneimage.png)
#### Espace de nommage
![nommage](images/espacenommage.png)

## Comment créer une image à partir d'un conteneur docker
* docker run -it --name=mycentos centos
* parfaut la commande wget n'existe pas sur centos
![myfirstimage](images/myfirstimage.png)
* on va installer **wget** dans centos
* yum install wget
![yum install](images/yuminstall.png)
* on va tester **wget** wget, puis on l'arrêter et enfin nous allons tester docker ps -a
![qlq cmd](images/qlqcmd.png)
* on peut visualiser les différences
docker diff mycentos
![diff](images/diffwget.png)
> pour dire que dans le dossier **/bin** nous avons installer **wget**

> A sigifie **Ajout**

> C sigifie **Change**

> D signifie **Delete**

### Comment enrégister sur notre depôt
docker commit mycentos ldamaro98/mycentos:1.0
## Générer des volumes docker
* Volumes nommés

docker volume create --name=vol1
* Pour afficher la liste des volumes docker

docker volume ls
* Pour monter un volume

docker run -it -v vol1:/www/html mycentos
* Pour inspeter le volume

docker volume inspect vol1
* Pour supprimer un volume

docker volume rm -f vol1
* Pour créer un anonyme, on le crée lors de lancement d'un conteneur

docker run -v /var/www/html mycentos
* Pour supprimer un volume anonyme, lors de la suppression d'une image

docker rm -v idImage
## Aborder les volumes d'hôte
* nous allons d'abord lancer un serveur **nginx**

docker run -d --name=nginx nginx
* Pour se connecter à un conteneur docker

docker exec -it nginx
* Pour afficher le contenu du ficher de configuration

cat /etc/nginx/nginx.conf
![conf](images/nginxconf.png)
* Pour quitter(se deconnecter de **nginx**)

exit
* Pour arrêter le conteneur

docker stop nginx
* Pour récupérer un du conteneur vers un fichier local

mkdir nginxconf && cd nginxconf

docker cp nginx:/etc/nginx/nginx.conf .
![ngix conf](images/cpnginx.png)
* Pour monter le fichier dans notre conteneur

docker run -d --name=nginx2 -v /home/user1/nginx/nginx.conf:/etc/nginx/nginx.conf
* Se connecter au connecter et vérifier

docker exec -it nginx2 bash

cat /etc/nginx/nginx.conf
![verifi](images/verifnginx.png)

## Découvrir le modèle réseau
![modele reseau](images/reseaubridge.png)