Docker

Docker est une plateforme de virtualisation légère qui permet aux développeurs de créer, déployer et exécuter des applications dans des conteneurs logiciels. Ces conteneurs sont des environnements logiciels autonomes et portables, encapsulant tout ce dont une application a besoin pour s'exécuter, y compris le code, les bibliothèques, les dépendances et les variables d'environnement.

La principale caractéristique de Docker est sa capacité à isoler les applications dans des conteneurs, ce qui les rend indépendantes du système d'exploitation sous-jacent. Cela signifie que les développeurs peuvent créer des conteneurs une fois et les exécuter de manière cohérente sur n'importe quel environnement compatible avec Docker, que ce soit sur leur propre machine de développement, sur un serveur de production ou dans le cloud.

Docker simplifie également le processus de développement, de déploiement et de gestion des applications, en permettant aux développeurs de packager leur code avec toutes ses dépendances dans un conteneur unique. Cela garantit une cohérence entre les environnements de développement, de test et de production, ce qui facilite la collaboration entre les équipes et réduit les problèmes liés aux différences d'environnement.

En résumé, Docker est une technologie de virtualisation légère et portable qui permet aux développeurs de créer, déployer et gérer des applications de manière efficace et cohérente, en utilisant des conteneurs logiciels pour encapsuler leur code et ses dépendances.



Installation

site officiel docker

Installation de docker et de docker-compose (pour déployer des stacks de conteneurs) : 

apt install docker.io docker-compose -y

Portainer

Fournit un environnement graphique pour administrer les conteneurs.

Installation :

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Se connecter sur https://localhost:9443

Commandes

Afficher les conteneurs :

docker ps

démarrer conteneur :

docker start <id>

stopper conteneur :

docker stop <id>

effacer conteneur :

docker rm <id>

afficher les images :

docker images

effacer image :

docker rmi <id>

entrer dans le conteneur :

docker attach <id>

lancer des commandes dans le conteneur, ici entrer dans le bash :

docker exec -it <id> /bin/bash

Dans un conteneur on peut utiliser exit pour quitter mais cela éteint le conteneur, sinon on utilise le raccourcis clavier ctrl-p ctrl-q pour quitter le conteneur en le laissant tourner en arrière plan.

Création de conteneur

Télécharger une image ubuntu :

docker pull ubuntu

Affiche l'image :

docker images

Affiche les ​conteneurs (-a = inclure inactif) :

docker ps -a

Démarrer le conteneur et lui donner un nom :

docker run -it --name buntu ubuntu

Quitter et fermer le conteneur :

exit

Lancer le conteneur créé précédemment :

docker start buntu

​Entrer dans le conteneur :

docker attach buntu

Pour sortir du conteneur sans le fermer faire​ CTRL-p CTRL-q 

Exécuter la commande ls dans notre conteneur buntu :

docker exec -it buntu ls

Docker compose

Créer le fichier :

nano docker-compose.yml

Voici un exemple de docker-compose.yml pour créer un serveur nginx proxy manager :

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    # environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      # DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Créer et lancer le conteneur :

docker-compose up -d

Création d'image

Tout d’abord nous allons créer un dossier docker (il faudra docker installé ainsi que l’image ubuntu)

on créer un fichier texte qui va appeler une image docker, la modifier a notre convenance et en faire une nouvelle image, notre modification consiste a mettre à jour le système ainsi que copier un fichier text de notre pc vers le conteneur.

mkdir docker
cd docker
echo "coucou" >> test.txt

Création du dockerfile :

nano Dockerfile

FROM ubuntu

RUN apt update && apt upgrade -y

COPY test.txt /home/

Créer l'image :

docker build -t test/ubuntu .

Vérifier que l'image est bien présente :

docker images

Lancer le conteneur et entrer dedans :

docker run -it --name test test/ubuntu

Vérifier le fichier texte :

cat home/test.txt