Démarrer avec Docker
Mis à jour : 19/01/2023 danny
Docker est une plateforme pour lancer des applications dans des containers.
Documentation
Site officiel
https://www.docker.com/
Procédures d'installation
https://docs.docker.com/install/linux/docker-ce/ubuntu/
Recherche des images sur docker hub
https://hub.docker.com/
Installation
# Installation
sudo apt-get --yes install docker.io
# Désinstallation des anciennes versions
sudo apt-get remove docker docker-engine docker.io containerd runc --yes
# Test de l'installation
sudo docker run hello-world
# Gestion des droits
sudo usermod -aG docker ${USER}
# Redémarrage pour prise en compte des droits
reboot
Commandes
# Indique la version de docker
sudo docker version
# Redémarrage du service docker
sudo service docker restart
# Liste des images
docker images
docker image ls
# Liste des containers
docker ps -a
docker container ls
# Efface toutes les images
docker rmi $(docker images -q)
# Efface tous les containers
docker rm $(docker ps -a -q)
Images
# Recherche une image
sudo docker search nginx
# Rapatrie une image
docker pull nginx
# Rapatrie une image dans une version spécifique
docker pull nginx:1.17.9
docker pull nginx:latest
docker pull node:12.16.1
# Supprime une image avec image_id
docker rmi image_id
# Supprime une image avec image_id en mode forcé
docker rmi -f image_id
# Renomme une image contenant image_id 0a
docker tag 0a new-name:tag-name
Containers
Options
- -d : daemon
- -p : publish
# Execute un container nommé frontend à partir d'une image nginx
sudo docker pull nginx:1.17.9
sudo docker run --name frontend -d -p 80:80 nginx:1.17.9
# Stoppe un container nommé frontend
docker stop frontend
# Efface un container nommé frontend
docker rm frontend
# Redémarre un container
docker restart frontend
# Efface un container nommé frontend en mode forcé
docker rm frontend -f
# Renomme un container old-name en un container new-name
docker rename old-name new-name
# Visualise les logs
docker logs frontend
# Entre dans le conteneur en mode execution
docker exec -it frontend /bin/bash
Dockerfile
.dockerignore
.git
*Dockerfile*
*docker-compose*
node_modules
Dockerfile
FROM nginx:1.17.9
LABEL author="www.ganatan@com"
COPY /dist/angular-starter/browser /usr/share/nginx/html
# Création d'une image à partir du dockerfile par défaut
# Nom nom-image , Tag 1.0.0
docker build -t nom-image:1.0.0 .
# Création d'une image à partir du fichier dockerfile nommé Dockerfile-specific
docker build -t nom-image:1.0.0 -f Dockerfile-specific .
# Exécution du container sur le port 5000
docker run --rm --name nom-container -d -p 5000:80 nom-image:1.0.0
# Entre dans le conteneur en mode execution
docker exec -it nom-container /bin/bash
Créer une image Hello
hello/Dockerfile
FROM busybox:latest
ADD index.html /www/index.html
EXPOSE 4000
CMD httpd -p 4000 -h /www; tail -f /dev/null
hello/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<title>titre de notre page</title>
</head>
<body>
Page Hello
</body>
</html>
# se positionner dans le répertoire hello contenant le fichier Dockerfile
# Crée une image avec un nom aléatoire à partir de l'image busybox
docker build .
# Crée une image hello:latest à partir de l'image busybox
docker build -t helloimage:1.0.0 .
# Execute le container mais port 4000 non visible
docker run --rm -d helloimage:1.0.0
# Execute le container mais port 5000 visible en mode non daemon
docker run --rm -p 5000:4000 helloimage:1.0.0
# Execute le container mais port 5000 visible en mode daemon
docker run --rm -d -p 5000:4000 helloimage:1.0.0
# Execute le container avec le nom hellocontainer
docker run --rm --name hellocontainer -d -p 5000:4000 helloimage:1.0.0
Docker registry
Créer une image Docker sur le Docker Hub.
La rendre accessible de façon publique.
# Connection au docker Hub
docker login -u "my_name" -p "my_password" docker.io
# Tag notre image
docker tag helloimage:1.0.0 my_name/angular-example-starter:1.0.0
# Envoie l'image sur docker Hub
docker push my_name/angular-example-starter:1.0.0
# Récupère l'image sur son poste à partir de Docker Hub
docker pull my_name/angular-example-starter:1.0.0
# Exécute l'image dans un container
docker run --rm --name hellocontainer -d -p 80:4000 my_name/angular-example-starter:1.0.0
Volumes
# Création d'un volume
docker volume create volume-test
# Liste des volumes
docker volume ls