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.
Presentation
Nous allons installer une version ubuntu-server (la dernière) qui sera la plateforme pour le moteur de virtualisation/containérisation Docker.
nom | ubuntu |
---|---|
ram | 4 go |
disque | 20go |
ip | 192.168.100.230/24 |
pasarelle | 192.168.100.254 |
dns1 | 8.8.8.8 |
dns2 | 9.9.9.9 |
user | ubuntu |
mdp | changeme |
install | ssh |
install | nano |
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