Skip to content

🚀 InitiationDocker est un Guide Complet Docker pour débutants et intermédiaires. Explorez l’installation et l’usage de Docker sous WSL et Linux, avec des exemples pratiques incluant Apache, MariaDB, Node.js et Composer. Idéal pour apprendre à créer, configurer et gérer vos environnements de développement.

Notifications You must be signed in to change notification settings

fannysaez/initiationDocker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

🚀 Guide Complet Docker, WSL, Linux, Apache, MariaDB, Node, Composer

Docker WSL Linux Apache MariaDB Node.js Composer

1️⃣ Installation de WSL et Docker Desktop


2️⃣ Premiers pas avec Docker

  • Récupérer une image :
    docker pull ubuntu:latest
  • Voir les images :
    docker image ls
  • Supprimer une image :
    docker rmi ubuntu:latest
  • Lancer un container :
    docker run ubuntu:latest

3️⃣ Manipulation de containers (Exercice pas à pas)

  1. Lancer un container Ubuntu :
    docker run -it --name monubuntu ubuntu:latest bash
  2. Rentrer dans le container :
    docker exec -it monubuntu bash
  3. Créer un fichier :
    touch /tmp/monfichier.txt
  4. Sortir (exit)
  5. Récupérer le fichier :
    docker cp monubuntu:/tmp/monfichier.txt C:/Users/votreuser/Desktop/

À refaire avec Alpine

  • docker pull alpine:latest
  • docker run -it --name monalpine alpine:latest sh
  • etc.

4️⃣ Installer et utiliser nano dans un container

  • Ubuntu :
    apt update && apt install -y nano
  • Alpine :
    apk update && apk add nano

5️⃣ Gestion des containers

  • Voir actifs : docker container ls
  • Voir tous : docker container ls -a
  • Stopper : docker stop moncontainer
  • Redémarrer : docker start moncontainer
  • Supprimer : docker rm moncontainer
  • Tout supprimer : docker container prune

6️⃣ Copier des fichiers

  • Container → machine :
    docker cp moncontainer:/chemin/du/fichier.txt /chemin/de/destination
  • Machine → container :
    docker cp /chemin/du/fichier.txt moncontainer:/destination

7️⃣ Lancer Apache (httpd) et servir vos fichiers

  • Windows :
    docker run -d --name apache --rm -v C:/chemin/vers/votre/dossier:/usr/local/apache2/htdocs -p 8080:80 httpd
  • WSL :
    docker run -d --name apache --rm -v $(pwd):/usr/local/apache2/htdocs -p 8080:80 httpd
  • Voir les fichiers :
    docker exec -it apache ls /usr/local/apache2/htdocs

8️⃣ Options Docker importantes

  • -p 8080:80 : port
  • -v /chemin/local:/chemin/container : volume
  • -e VAR=valeur : variable d'env
  • -d : détaché
  • --name : nom
  • --rm : suppression auto

9️⃣ Node.js, npm et uuid

  • Installer Node.js : nodejs.org
  • Installer uuid :
    npm install uuid
    ou globalement :
    npm install -g uuid

🔟 MariaDB avec Docker

  • Lancer :
    docker run -d --name db -e MARIADB_ROOT_PASSWORD=secret mariadb
  • Rentrer :
    docker exec -it db bash
  • Se connecter :
    mariadb -uroot -psecret
  • SQL :
    CREATE DATABASE simplon;
    USE simplon;
    CREATE TABLE student (id int primary key not null auto_increment, name varchar(255));
    INSERT INTO student (name) values ("Jean"), ("Bernard"), ("Véronique");
    SELECT * FROM student;
    
  • Dump :
    mariadb-dump -uroot -psecret simplon > /tmp/student.sql
  • Récupérer le dump :
    docker cp db:/tmp/student.sql C:/Users/votreuser/Desktop/
  • Persistance :
    docker run -d --name db2 -e MARIADB_ROOT_PASSWORD=secret -v mariadbdata:/var/lib/mysql mariadb

1️⃣1️⃣ Créer une image personnalisée

  • Ubuntu + nano (Dockerfile) :
    FROM ubuntu:24.10
    RUN apt update && apt install -y nano
  • PHP + Composer (Dockerfile) :
    FROM php:8.2-cli
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

1️⃣2️⃣ Exercices

  • Manipulation Ubuntu/Alpine
  • Apache : servez vos fichiers
  • MariaDB : base, table, dump, persistance
  • Dockerfile : Ubuntu+Nano, PHP+Composer
  • Node.js/npm/uuid

📚 Liens utiles


🧠 Astuces

  • $(pwd) (WSL) ou ${PWD} (Powershell) : dossier courant
  • docker system prune -a : tout nettoyer (attention !)

Si tu veux aller plus loin, explore les autres fichiers du dossier pour des commandes Linux, Apache, domaines, etc.


🐧 Linux : Commandes et Astuces

Voir le guide complet Linux

Linux

Racourcis claviers dans le terminal

Ctrl Alt T Ouvrir un terminal Ctrl A Mettre le curseur au début de la ligne Ctrl E Mettre le curseur à la fin de la ligne Fleche Haut/Bas Retrouve la commande précédente/suivante Ctrl L "Clear" le terminal Tab Auto complétion si possible Shift Ctrl V Coller Ctrl K Coupe tout le texte après le curseur Ctrl U Coupe tout le texte avant le curseur Ctrl Y Colle le texte coupé

sudo !! Lance la commande précédente en tant que root

Les incontournables

whoami

Donne le nom de l'utilisateur courant.

man

"Manuel". Affiche la documentation pour une commande donnée.

man ls      # Explique comment utiliser la commande "ls"

whatis

Donne une explication courte sur une commande donnée.

pwd

Pour "print working directory". Affiche votre position actuelle sur la machine.

cd

Pour "change directory". Permet de se déplacer de dossier en dossier.

cd destination                  # On entre dans le dossier destination
cd /destination/absolue/ici

cd ~                            # Retour à la "home" de l utilisateur
cd                              # Idem
cd /                            # Retour à la racine
cd -                            # Retour au dossier précédent (PAS forcément parent)

ls

Afficher les fichiers dans le repertoire courant

ls
ls -l       # --long Liste verticale avec plus d'informations
ls -a       # --all Voir tous les fichiers et dossiers, même cachés
ls -al      # Combinaison des deux switchs ci-dessus
ls --color  # Ajoute des couleurs au résultat

cat

Affiche le contenu d'un fichier.

less

Affiche le contenu "page par page"

head

Affiche le début d'un fichier. On peut préciser le nombre de lignes.

head fichier
head -5 fichier     # Affiche seulement 5 lignes

tail

Affiche la fin d'un fichier On peut préciser le nombre de lignes.

tail fichier
tail -5 fichier     # Affiche seulement 5 lignes

touch

Permet de créer un fichier ou plusieurs fichiers

touch nom-du-ficher
touch fichier1.txt fichier2.txt
touch fichier{1..10}.txt    # Créer fichier1.txt, fichier2.txt ... fichier10.txt

echo

Affiche du texte dans le terminal (génère un output de texte).

nano

Editeur de texte en terminal.

vi

Editeur de texte en terminal très difficile à manipuler.

mv

(Move) Déplace un fichier ou un dossier Permet aussi de renommer un fichier si on spécifie un nouveau nom

mv fichier destination/
mv fichier meme_fichier_avec_un_nouveau_nom
mv fichier destination/meme_fichier_avec_un_nouveau_nom

On peut aussi déplacer plusieurs fichiers à la fois

mv fichier1 fichier2 fichier3 destination
mv *.txt destination

La dernière commande permet ici de déplacer tous les fichiers .txt vers le dossier de destination.

cp

Pour "copy". Fait une copie du ficher spécifié.

cp fichier1 fichier1copié

cmp

Pour "compare". Vérifie si deux fichiers sont identiques.

diff

Pour "différence". Voir les différences entre plusieurs fichiers.

grep

Permet de trouver du texte dans des fichers via des expressions régulières.

-i : case incensitive -r : recursive -v : trouve toutes les lignes qui ne correspondent PAS à la recherche -n : affiche le numéro de la ligne -c : "count", compte le nombre d'occurence -E : Expression régulière. Plus besoin d'échapper les caractères spéciaux comme |.

grep plop fichier            # Regarde si "fichier" contient "plop"
grep plop ./dossier/*       # Regarde si un des fichiers de "dossier" contient plop
grep -E "ou$|plop$" fichier        # Trouve les lignes se terminant par "ou" ou "plop"

# Avec le pipe
cat fichier | grep coucou       # Recherche coucou dans l'output de cat
ls -al | grep coucou       # Recherche coucou dans l'output de ls

sed

Tuto de DistroTube Permet de remplacer des chaines de caractères. -i case incensitive -e expression régulière

sed -e "s/coucou/PLOP/g" fichier    # Remplace les "coucou" par des "PLOP" dans fichier
cat fichier | sed -e "s/ou/PLOP/g" # Remplace les "ou" par des "PLOP" dans l'output de cat (mais le fichier est intact).

awk

Tuto de DistroTube Outil surpuissant de traitement de texte avancé. Permet une grande précision, des déclarations de variables et executions de commandes.

awk pattern { action }
awk '{print $3}' monfichier.txt     # On peut lui passer un fichier
cat monfichier | awk '{print $1}'   # On peut aussi lui passer un flux

awk '{print $0}' fichier            # Affiche tout le contenu de fichier
awk '{print $1}' fichier            # Affiche la première "colonne" de fichier (premier mot de chaque ligne)

awk 'FS=";" {print $2} fichier'      # Défini ";" comme séparateur de champs au lieu de espace.

awk '$3 ~ /pattern/ {print $1 " " $2 }' fichier # Recherche de pattern
awk '$3 !~ /pattern/ {print $1 " " $2 }' fichier # Exclusion de pattern

tr

Transformation de caractères

tr pattern remplacement
echo abcd | tr bd 24            # Retourne a2c4

df

Voir l'espace utilisé sur le disque. Le switch -h ('human') permet d'avoir un retour plus lisible.

free

Comme df, mais affiche l'espace libre.

shred

S'assure qu'un fichier soit "déchiquetté" et rendu parfaitement illisible, même après suppression.

find

Permet de trouver un fichier ou dossier dans un repertoire donné.

find . -type f -name "*.mp3"      # Trouve tous les fichiers .mp3 se trouvant dans le dossier courant

find / -type d -name "important*" #Trouve tous les dossiers commençant par "important" sur toute la machine

ps

"Processes" Affiche les processus en cours d'execution.

kill

Permet de "tuer" un processus en renseignant sont Pid (process id).

Gestion des permissions et utilisateurs

adduser

Ajoute un nouvel utilisateur sur la machine.

sudo adduser charlotte  # Créer l'utilisatrice "charlotte" et le groupe "Charlotte"
# On sera invité à lui choisir un mdp et d'autres informations
# Le repertoire /home/charlotte sera créé automatiquement avec les bonnes permissions
# Une Shell lui sera attribué par default

useradd

Ajoute un utilisateur mais ne donne pas la possibilité de changer ses données et mdp. Ne génère pas non plus de "home" pour ce user par défault !

sudo useradd sylvain        # Créé juste le user
sudo useradd sylvain -m     # Génère aussi le dossier "/home/sylvain"

passwd

Change le mot de passe d'un utilisateur.

sudo passwd françois    # Change le mdp de l'utilisateur "françois"
sudo passwd root         # Change le mdp de root (qui n'a pas de mdp par défault)

userdel

Supprime un utilisateur (mais pas son dossier home).

sudo userdel françois   # François n'existe plus, mais ses fichiers existent toujours

visudo

Permet d'éditer le fichiers des "sudoers" : les utilisateurs ayant le droit d'utiliser "sudo" (les administrateurs donc).

sudo visudo

On peut alors ajouter des users et groupes et leur donner les droits sudoers.

françois ALL = /sbin/useradd       # Autorise françois à utiliser l'executable useradd
charlotte ALL = ALL                 # Donne tous les droits à charlottes

usermod

"User modification" permet de changer les informations d'un utilisateur. Consultez "man usermod" pour voir toutes les options possibles.

sudo usermod charlotte --shell /usr/bin/zsh     # Change la shell de Charlotte à ZSH.
sudo usermod -l michel françois                 # Renomme "françois" en "michel"

su

"Switch user" Permet de se logger en tant qu'un autre utilisateur

su charlotte            # Se log en tant que charlotte
su                      # Se log en tant que root
su - charlotte          # Se log en tant que charlotte et charge son environnement (MIEUX)
su -                    # Se log en tant que root et charge son environnement (MIEUX)

On peut simplement faire "exit" pour revenir à son profil de base.

finger

Doit être installé. Permet d'avoir des informations concernant un utilisateur.

Voir tous les users

cat /etc/passwd

Pour chaque user, nous obtenons une ligne suivant ce model username:password:uid:gid:personaldata:homeDIR:shell uid = user id gid = group id

Exemple: charlotte:x:1000:1000:,,,:/home/charlotte:/bin/bash Le "x" pour password indique que celui ci est rangé dans un autre fichier (/etc/shadow). Bien sûr ce dernier est hashé.

groups

Voir les groupes auquels appartient le user.

groupadd

Ajoute un nouveau groupe.

sudo groupadd powerrangers

Voir tous les groupes sur la machine

cat /etc/group

Ajouter un user à un groupe

Il faut passer par la commande usermod.

sudo usermod -G powerangers françois     # DANGER !! François ne fera plus parti QUE du groupe powerangers
sudo usermod -aG powerangers françois     # On AJOUTE le groupe poweranger à François

chmod

Change les droits d'accès à un fichier/dossier. read = r = 4 write = w = 2 execute = x = 1

user = u group = g others = o

chmod 744 fichier           # Donne toutes les permission au possesseur, mais les autres ne peuvent que lire
chmod 777 fichier           # Donne toutes les permissions à tout le monde sur ce fichier
chmod +x fichier            # Ajoute à tout le monde la permission d'execution sur ce fichier
chmod u+x go-rw fichier     # Ajoute "execute" au user, retire read/write au groupe et aux autres

chown

Change le propriétaire du fichier/dossier.

chown françois fichier   # Maintenant le fichier appartient à françois
chown -R françois dossier   # Maintenant le dossier et son contenu appartiennent à françois

chgrp

Change le groupe d'un fichier

chgrp powerrangers fichier   # Maintenant le fichier appartient au groupe powerrangers
chgrp -R powerrangers dossier   # Maintenant le fichier appartient au groupe powerrangers

chsh

"Change shell" permet de changer la shell de l'utilisateur. Par défault il s'agit de /bin/bash, mais il existe d'autres shells tels que zsh et fish, plus modernes, mais qui ne sont pas forcément installées sur la machine.

sudo chsh       # On sera alors invité à renseigner la nouvelle shell

Le changement de shell ne prendra effet qu'en relançant la machine.

Reseau

Ressources Tuto SSH par DistroTube Tuto SSH par TraversyMedia

openssh-client / openssh-server et setup

Le client et le serveur permettant de réaliser des connections SSH. La machine qui essaye de se connecter en remote est le "client" et doit donc avoir openssh-client installé. La machine a laquelle on veut se connecter doit avoir openssh-server installé ET doit exposer un port.

sudo apt install openssh-server    # Debian
sudo pacman install openssh         # Arch (openssh contient le client et le serveur)

sudo systemctl status ssh           # Check le status du serveur SSH
# sshd (pour ssh daemon) fonctionne également

Codé en Rust. Configuration en .toml.


🌐 Installer Apache pour héberger un site PHP avec HTTPS

Voir le guide complet Apache

🌐 Installer Apache pour héberger un site PHP avec HTTPS

🔧 1. Installer Apache

sudo apt update
sudo apt install apache2

Apache est maintenant installé. Il écoute par défaut sur le port 80.

  • Contrairement à Nginx et Caddy, Apache n'a pas besoin de fastCGI, il à son propre moteur PHP mod_php

📂 2. Créer un dossier pour ton projet PHP

sudo mkdir -p /var/www/mon-site-php
sudo chown -R www-data:www-data /var/www/mon-site-php

Place tes fichiers PHP dans ce dossier. Par exemple un index.php.


🧾 3. Créer un Virtual Host Apache

Créer un fichier dans /etc/apache2/sites-available/mon-site-php.conf :

<VirtualHost *:80>
    ServerName monsite.domaine.fr
    DocumentRoot /var/www/mon-site-php

    <Directory /var/www/mon-site-php>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mon-site-php_error.log
    CustomLog ${APACHE_LOG_DIR}/mon-site-php_access.log combined
</VirtualHost>

✅ 4. Activer le site et le module rewrite

sudo a2ensite mon-site-php.conf
sudo a2enmod rewrite
sudo systemctl reload apache2

Ton site est maintenant accessible en HTTP.


🔒 5. Ajouter HTTPS avec Let's Encrypt (Certbot)

a. Installer Certbot pour Apache :

sudo apt install certbot python3-certbot-apache

b. Générer le certificat SSL automatiquement :

sudo certbot --apache

Il te demandera le nom de domaine (ex: monsite.domaine.fr) et configurera automatiquement le SSL.


🔁 6. Redirection automatique HTTP → HTTPS

Certbot le propose pendant la configuration. Sinon, ajoute dans ton vhost :

<VirtualHost *:80>
    ServerName monsite.domaine.fr
    Redirect permanent / https://monsite.domaine.fr/
</VirtualHost>

🧼 7. Nettoyage (si besoin)

Si tu veux désactiver ou supprimer un site :

sudo a2dissite mon-site-php.conf
sudo systemctl reload apache2

🧠 Résumé

Étape Action
1 Installer Apache
2 Créer le dossier du site
3 Créer un VirtualHost
4 Activer le site et les modules
5 Installer Certbot
6 Générer le certificat HTTPS
7 (Optionnel) Rediriger HTTP → HTTPS

🔐 Important

  • Un seul service peut écouter le port 80/443 (Apache OU Caddy, pas les deux)
  • Si tu veux faire cohabiter les deux, il faut les faire écouter sur des ports différents ou utiliser un reverse proxy

🌍 Comprendre les noms de domaine et sous-domaines

Voir le guide complet Domaines

🌐 Comprendre les noms de domaine et sous-domaines + où les acheter (ex : OVH)

🧠 Qu’est-ce qu’un nom de domaine ?

Un nom de domaine est une adresse lisible par les humains pour accéder à un site web. Exemples :

  • google.com
  • wikipedia.org
  • tonsite.fr

Un domaine correspond à une identité unique sur Internet.

🧩 Structure d’un domaine

Exemple : site1.example.com

  • com → extension (TLD)
  • example.com → domaine principal
  • site1.example.comsous-domaine

🧠 Qu’est-ce qu’un sous-domaine ?

Un sous-domaine est un domaine "en dessous" d’un domaine principal, utile pour séparer des sections ou projets :

  • www.tonsite.fr (souvent utilisé comme sous-domaine principal)
  • blog.tonsite.fr
  • admin.tonsite.fr
  • api.tonsite.fr

Tu peux créer autant de sous-domaines que tu veux gratuitement une fois ton domaine principal acheté.

🏪 Où acheter un nom de domaine ?

Parmi les principaux registrars (bureaux d'enregistrement) :

  • OVH ✅ recommandé
  • Gandi
  • Ionos
  • Namecheap
  • Google Domains (fermé depuis 2023)

Nous allons nous concentrer sur OVH, un fournisseur français sérieux avec une bonne interface de gestion DNS.

💰 Tarifs indicatifs OVH (août 2025)

Extension Prix achat 1 an Renouvellement annuel
.fr ~6,59 € HT ~6,59 € HT
.com ~9,99 € HT ~9,99 € HT
.net ~11,99 € HT ~11,99 € HT
.dev ~14,99 € HT ~14,99 € HT
.io ~39,99 € HT ~39,99 € HT

⚠️ Les prix varient légèrement avec les promos ou la TVA.

🔧 Comment ça marche après achat ?

  1. Tu achètes un domaine sur OVH (ex: monsite.fr)
  2. Tu vas dans l’espace client OVH → section Zone DNS
  3. Tu ajoutes un enregistrement A pour chaque sous-domaine :
@                A     123.45.67.89      # domaine principal (monsite.fr)
www              A     123.45.67.89
admin            A     123.45.67.89
blog             A     123.45.67.89
  1. En quelques minutes/heures, les domaines pointeront vers ton serveur

📝 Résumé

  • Un nom de domaine = ton identité sur le web
  • Un sous-domaine = une section dédiée (admin, blog, app, etc.)
  • OVH permet de tout gérer (achat, DNS, mail)
  • Une fois le domaine acheté, tu configures les zones DNS pour pointer vers ton serveur

✅ Une fois tes domaines configurés, tu peux passer à la mise en ligne avec Caddy ou un autre serveur web !


🌐 Louer un serveur Linux en ligne (VPS/Dédié)

Voir le guide complet Serveur en ligne

🌐 Louer un serveur Linux en ligne (Debian/Ubuntu) pour héberger des sites web

🎯 Objectif

Comprendre comment louer un serveur en ligne (VPS ou dédié), y installer un Linux propre (Debian ou Ubuntu), et y héberger des projets web (Symfony, WordPress, PHP, etc.)


💡 VPS vs Serveur dédié

Type de serveur Description Pour qui ?
VPS (Virtual Private Server) Un serveur virtuel isolé partagé sur une machine physique. Idéal pour héberger 1 à 5 sites, coût réduit.
Serveur dédié Une vraie machine physique pour toi seul. Pour les gros projets ou plusieurs dizaines de sites.

📌 Fournisseurs recommandés

🔷 OVHcloud

  • https://www.ovhcloud.com/fr/vps/
  • Datacenters en France et en Europe
  • Offre VPS à partir de 5,00€ HT/mois
  • OS au choix : Ubuntu, Debian, CentOS, etc.
  • Interface claire, documentation abondante

Exemple d’offre :

VPS Discovery
→ 1 vCore / 2 Go RAM / 20 Go SSD
→ 5 € HT / mois

🔶 Scaleway

Exemple d’offre :

DEV1-S
→ 2 vCPU / 2 Go RAM / 40 Go SSD
→ 4,99 € HT / mois

🧱 Ce que tu obtiens avec un VPS

Une fois acheté, tu as :

  • Une adresse IP publique fixe
  • Un accès complet root au serveur
  • Un Linux propre (Debian/Ubuntu selon ton choix)
  • L’accès SSH (ex : ssh root@IP_DU_SERVEUR)
  • Aucune interface préinstallée : c’est à toi d’installer ce que tu veux

🧰 Outils que tu installeras ensuite

Une fois connecté au serveur, tu installeras :

  • Un serveur web : Apache, Nginx, ou Caddy
  • PHP, MySQL/MariaDB, Composer
  • Un pare-feu (UFW)
  • Certbot ou Caddy pour le HTTPS
  • Git, Node.js, etc. selon les besoins de ton projet

🧠 Pourquoi choisir OVH ou Scaleway ?

Critère OVH Scaleway
🇫🇷 Serveurs en France
🧾 Prix abordables
📚 Documentation ✅ (moins complète qu’OVH)
🌐 Interface client Classique Moderne & rapide
☁️ Autres services cloud

🔐 Astuce sécurité : créer un utilisateur non-root

Dès que tu accèdes à ton serveur :

adduser monuser
usermod -aG sudo monuser

Puis connecte-toi avec :

ssh monuser@IP

📝 À retenir

  • Louer un VPS = acheter un mini-serveur personnel 24/7 accessible depuis le monde entier
  • Debian et Ubuntu sont les plus simples à administrer pour héberger des apps PHP/Symfony
  • OVH et Scaleway offrent un excellent rapport qualité/prix pour débuter ou héberger plusieurs sites web

# initiationDocker

About

🚀 InitiationDocker est un Guide Complet Docker pour débutants et intermédiaires. Explorez l’installation et l’usage de Docker sous WSL et Linux, avec des exemples pratiques incluant Apache, MariaDB, Node.js et Composer. Idéal pour apprendre à créer, configurer et gérer vos environnements de développement.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published