Qu’est-ce que c’est Docker ?

Docker c’est une plateforme de containérisation d’aplications.

C’est quoi un container?

Un environnement d’exécution léger, et une alternative aux méthodes de virtualisation traditionnelles basées sur les machines virtuelles.

Part II

Presentation

Nous allons installer une version ubuntu-server (la dernière) qui sera la plateforme pour le moteur de virtualisation/containérisation Docker.

Ubuntu 22.04.01

nomubuntu
ram4 go
disque20go
ip192.168.100.230/24
pasarelle192.168.100.254
dns18.8.8.8
dns29.9.9.9
userubuntu
mdpchangeme
installssh
installnano

Pour ceux qui sont habitués avec le fichier de configuration /etc/network/interfaces… Une petit exemple de fichier interfaces réseau :

cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens18:
      addresses:
      - 192.168.100.230/24
      gateway4: 192.168.100.254
      nameservers:
        addresses:
        - 8.8.8.8
        - 9.9.9.9
        search:
        - localhost
        - ubuntu
  version: 2
Attention fichier soumis aux critères du parti national-social de l'Indentation. Une mauvaise tabulation t'amène en exil.

Nous allons nous conetcter en ssh sur la machine, nous allons ouvrir deux sessions pour pouvoir rentrer aussi sur la platforme docker. Installer docker, la documentation officielle : Install Docker Engine on Ubuntu

Installation manuelle

Nous allons commencer par les clefs nécessaires accéder le dépôt du logiciel.

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

En suite:

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Maintenant ayant la nouvelle source des logiciels, nous allons refaire une mise à jour et télécharger, et installer docker.

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# verification:
sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Les composants Docker:

  • docker-engine = Service Docker
  • docker-client = Manipuler les services docker (n’importe ou local/ externes)
  • docker-hub = Repositoire docker

La syntaxe

docker <categorie> <commande_docker> <options_docker> <image> <commande_image>

Examples:

# Lister les containers actifs
sudo docker container ls

# Lister toutes les containers 
sudo docker containers ls -a 

# Lister les images 
sudo docker image ls

# Creer un container 
sudo docker container run <nom_image>

# Example
sudo docker container run hello-world

# Se connecter dans le container -i = interactif -t terminal
sudo docker container run -it ubuntu bash

# Supprimer des containers
# Nous allons utiliser les premieres deux caracteres du "container id"  
sudo docker container rm 36 7c 6a ca f2 eb e0 

# Pour relancer un container :
# encore une fois nous allons utiliser les premieres caracteres du "container id"
sudo docker container start -i 027c

# Arreter un container :
sudo docker container kill 027c

# Inspecter un container 
sudo docker container inspect 027c

Les images

# Lister les images existantes:
sudo docker image ls

Nous pouvons choisir différentes versions d’une application depuis docker hub qui se retrouve sous la forme de différente image, accessible via la commande :

# Telecharger l'aplication et ses dependences
sudo docker image pull <aplication>

#Telecharger une image avec une version particuliere
sudo docker image pull <nom_image>:<version>

Faisons attention aux versions, et leur conformité avec la fonction souhaité aussi conscients à la taille de l’image.

Comme c’est le cas du python(python:latest) qui en installation complète arrive à avoir une taille de 1Go mais il y a une version particulière à 120Mo. (python:slim-buster)

Nous pouvons supprimer que les images non utilisées. Par conséquent, nous ne pouvons pas supprimer les images qui sont présentes dans les containers.

# Supprimer une image 
# sudo docker image rm <nom_image>:<version>
sudo docker image rm python:latest

Les reseaux Docker

Ayant un router entre mon pc et la machine ubuntu je vais activer le PAT pour les ports suivantes: 7777 / 8888 / 9999

Nous pouvons lister les reseaux disponible sur la platforme docker:

sudo docker network ls

Exercice:

# Run python:2 -m module Simplehttpserver port hote 8888:7777 guest 
sudo docker container run -ti -p8888:7777 python:2 python -m SimpleHTTPServer 7777

Ça va ouvrir une session de partage de fichiers dans le directoire racine de notre conteneur. Qui pourra être accédé avec notre navigateur à l’adresse :

http://192.168.100.230:8888

Exercise: Essayer la reseau interne a l’aide du ping et ip:

 sudo docker container run -ti --name centos01 centos bash

et

 sudo docker container run -ti --name centos02 centos bash

ip_neigh