Différences entre les versions de « Docker »

De InfoXelec
Aller à la navigation Aller à la recherche
Ligne 61 : Ligne 61 :
Il faut lancer la commande <code>docker context ls</code> afin de voir les différents contextes.<br>
Il faut lancer la commande <code>docker context ls</code> afin de voir les différents contextes.<br>
S'il existe un contexte lié au compte local, il faut alors le supprimer avec la commande <code>docker context rm <nom></code>.
S'il existe un contexte lié au compte local, il faut alors le supprimer avec la commande <code>docker context rm <nom></code>.
==Créer un Docker dédié au développement LARAVEL==
Nous allons créer une image permettant de développer en PHP 7.4 et Laravel 6 sur un Ubuntu plus récent.<br>
Créer un fichier '''dockerfile''' avec les éléments suivants :
<pre>
FROM ubuntu:focal
RUN apt-get update && \
    apt-get install -y apache2 php7.4 libapache2-mod-php7.4 php7.4-cli php7.4-mbstring php7.4-xml php7.4-zip
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]
</pre>
Lancer la commande <code>dicker build -t ifxwebdev .</code>


=Bibliographie=
=Bibliographie=

Version du 7 avril 2023 à 14:22

Présentation

Docker permet de gérer des conteneurs qui sont plus léger que les machines virtuelles.

Les images Docker permettent de gérer une configuration. Le conteneur Docker est une instance d'une image Docker.
On peut créer des images Docker avec le fichier dockerfile et la commande docker build -t nomimage .
On peut trouver des images Docker sur le DockerHub.

Il est possible de faire des environnements utilisant plusieurs conteneurs. Pour se faire, on va utiliser docker compose liée à un fichier de configuration docker-compose.yml.
Si docker est déjà installé, il faut le supprimer

Installation

sudo apt remove docker docker-engine docker.io containerd runc

Il faut dans un premier temps mettre à jour les dépôts
sudo apt update

Puis il faut installer les pré requis nécessaires
sudo apt install ca-certificates curl gnupg lsb-release

Il faut ensuite installer les certificats avec les commandes suivantes :
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Ensuite on installe le dépôt Docker dans le /etc/apt/sources.list/d pour Debian :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dans le cas de Ubuntu, il faut remplacer Debian par Ubuntu. La liste complète des distros dispo se trouve sur https://download.docker.com/linux/

On installe ensuite les paquets nécessaires à Docker proprement dit
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

On crée le groupe qui utilisera le service docker, si ce dernier n'existe pas et l'ajouter à l'utilisateur courant.
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker #pour activer le nouveau changement aux groupes

On active le service docker et containerd
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Utilisation :

Commandes utiles :

Lister les conteneurs qui sont exécutés : docker ps
Lancer un conteneur Debian : docker run debian:latest
Lister les images disponibles en local sur la machine : docker image ls
Lister les volumes : docker volume ls

Gestion des fichiers (volumes)

Les volumes sont utiles pour persister de la donnée et faire des sauvegardes.
Il existe 3 types de montages.

  • volume : géré par Docker volume. Les données sont stockées dans /var/lib/docker/volumes ;
  • bind : dossier de l'hôte ;
  • tmpfs : Les données ne sont pas persistées.

Pour utiliser le bind mount, on pourra utiliser la commande docker run -d --name c1 --mount type=bind,source=/home/user/dossier/,destination=/var/www/html/ ubuntu/apache2:latest

Sécurisation

Si on lance un conteneur Docker en mode root, les applications auront alors ces même droits sur le système hôte.

FAQ

En cas d'erreur de lancement de Docker via un profil utilisateur

Cannot connect to the Docker daemon at unix:///home/parrot/.docker/desktop/docker.sock. Is the docker daemon running?
Il faut lancer la commande docker context ls afin de voir les différents contextes.
S'il existe un contexte lié au compte local, il faut alors le supprimer avec la commande docker context rm <nom>.

Créer un Docker dédié au développement LARAVEL

Nous allons créer une image permettant de développer en PHP 7.4 et Laravel 6 sur un Ubuntu plus récent.
Créer un fichier dockerfile avec les éléments suivants :

FROM ubuntu:focal
RUN apt-get update && \
    apt-get install -y apache2 php7.4 libapache2-mod-php7.4 php7.4-cli php7.4-mbstring php7.4-xml php7.4-zip
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]

Lancer la commande dicker build -t ifxwebdev .

Bibliographie

Documentation officielle de Docker : https://docs.docker.com/
Vidéeo Youtube de Xavki : https://youtube.com/playlist?list=PLn6POgpklwWq0iz59-px2z-qjDdZKEvWd
Vidéo Youtube de Cocadmin : https://youtube.com/playlist?list=PL8SZiccjllt1jz9DsD4MPYbbiGOR_FYHu
GitHub de Noobosaurus-r3x qui parles de Docker : https://github.com/noobosaurus-r3x/Docker---Commandes-de-la-video/blob/main/Install%20Docker%20(Debian)