par Andrei SAMBRA

C'est qui ce Andrei SAMBRA ?

On part sur un dialogue, pas un monologue !

Je reste à votre disposition pour le reste de la journée.

Posez-moi des questions à tout moment.

<  Important

<  Question

Qu'est-ce que Docker ?

Qu'est-ce que Docker ?

Réponse: un conteneur.

 

En termes simples, un conteneur est juste un autre processus sur votre machine qui a été isolé de tous les autres processus sur la machine hôte.

Pourquoi Docker ?

Pourquoi Docker ?

Étant donné que les conteneurs Docker encapsulent tout ce dont une application a besoin pour s'exécuter (et uniquement ces éléments), ils permettent aux applications d'être facilement déplacées entre différents environnements (data center, dev laptop, etc.) et architectures.

Comment ça marche?

Comment ça marche?

Comment ça marche?

Le fichier de configuration Dockerfile

Tout commence par un fichier de config qui définissent comment créer une image Docker spécifique. Ce fichier s'appelle un Dockerfile. Le fichier exécute automatiquement les commandes décrites et crée une image Docker.

Comment ça marche?

L'image Docker

C'est un fichier immuable (non modifiable) qui contient le code source, les bibliothèques, les dépendances, les outils et d'autres fichiers nécessaires à l'exécution d'une application. Ce sont des templates, vous ne pouvez pas les démarrer ou les exécuter.

Comment ça marche?

Le conteneur Docker

C'est un environnement d'exécution virtualisé et local dans lequel les utilisateurs peuvent isoler les applications du système sous-jacent. Ces conteneurs sont des unités compactes et portables dans lesquelles vous pouvez démarrer une application rapidement et facilement.

Comment ça marche?

  • Pour créer une image à partir d'un Dockerfile:  "~$ docker build"
  • Pour créer un conteneur:                                "~$ docker create" ou "~$ docker run ..."

Terrain de jeux

Servir une page HTML statique

Dockerfile:

 

FROM nginx:alpine
COPY index.html /usr/share/nginx/html

Servir une page HTML statique

Fichier index.html

<html>
<h1>Hello world!</h1>
</html>

~$ chmod 755 index.html

Servir une page HTML statique

~$ docker build -t html .

~$ docker image ls

Servir une page HTML statique

~$ docker run -p 80:80 html

Servir une page HTML statique

~$ docker run -d -p 80:80 html

~$ docker ps

Servir une page HTML statique

Arreter le conteneur:

~$ docker stop <ID conteneur/nom>

Servir une page HTML statique

Après avoir fait des modifications dans index.html

~$ docker build -t html .

~$ docker rm <ID conteneur>

~$ docker run -d -p 80:80 html

Publier une image docker

Créer un repo sur Docker Hub

https://hub.docker.com/

  • Cliquez sur Create Repository
  • Choisissez un nom (i.e. test-html)

Créer un repo sur Docker Hub

$ docker push <user>/test-html

Using default tag: latest
The push refers to repository [docker.io/<user>/test-html]
An image does not exist locally with the tag: <user>/test-html

 

 

Pourquoi a-t-elle échoué? La commande push recherchait une image nommée <user>/test-html, mais n'en a pas trouvé.

Créer un repo sur Docker Hub

$ docker tag test-html <user>/test-html

Créer un repo sur Docker Hub

~$ docker login -u <user>

~$ docker push <user>/test-html

Créer un repo sur Docker Hub

~$ docker run -p 80:80 <user>/test-html

Utiliser des données externes

~$ mkdir data

 

~$ touch data/data.txt

Créez un dossier data/ et puis

un fichier data.txt a l'interieur

~$ docker run --mount type=bind,source="$(pwd)"/data,target=/usr/share/nginx/html/data -d -p 80:80 deiu/test-data

Démarrez le conteneur

~$ echo "Hello data" > data/data.txt

Créez un fichier data.txt dans le dossier data/

Astuces Docker

Les variables d'environnement

~$ echo $PATH

Les variables d'environnement

(une par une)

~$ docker run \
    -d -p 8080:8080 \
    -e PASSWORD=secret \
    deiu/test-env

Les variables d'environnement

(dans un fichier)

~$ cat env.list
DBFILE=/db/data.db
ORIGIN=https://example.org:3000
PASSWORD=secret



~$ docker run \
    -d -p 8080:8080 \
    --env-file env.list \
    deiu/test-env

Docker

By Andrei

Docker

  • 1,547