Docker est une plateforme pour développer, livrer et exécuter des applications à l’intérieur de conteneurs. Elle fournit un environnement léger, portable et cohérent pour le développement et le déploiement de logiciels. Ci-dessous, les principales commandes Docker, pour apprendre à gérer efficacement les applications conteneurisées.
Installation
Vérifier la version
docker --version
Images
Lister les images locales
docker images
Récupérer une image
docker pull <image_name>
Supprimer une image
docker rmi <image_name>
Containers
Lister les containers
docker ps
Lister tous les containers
docker ps -a
Démarrer un container
docker run -d --name <container_name> <image_name>
-d
: démarrer en tâche de fond
Stopper un container
docker stop <container_name>
Démarrer un container
docker start <container_name>
Supprimer un container
docker rm <container_name>
Les logs d’un container
docker logs <container_name>
Les volumes
Lister les volumes
docker volume ls
Créer un volume
docker volume create <volume_name>
Supprimer un volume
docker volume rm <volume_name>
Monter un volume dans un container
docker run -d --name <container_name> -v <volume_name>:/path/in/container <image_name>
Docker Compose
Vérifier l’installation
docker-compose --version
Lancer un Docker Compose
Se déplacer dans le dossier contenant le fichier docker-compose.yml
cd /folder/to/docker-compose docker-compose up -d
Arrêter le Docker Compose
docker-compose down
Exemple de fichier docker-compose.yml
Issu de PrestaShop : https://github.com/PrestaShop/PrestaShop/blob/develop/docker-compose.yml
version: '2.1' volumes: db-data: services: mysql: image: mysql:8 ports: - "3306:3306" volumes: - db-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWD:-prestashop} MYSQL_DATABASE: ${DB_NAME:-prestashop} restart: unless-stopped networks: - prestashop-network prestashop-git: hostname: ${PS_HOSTNAME:-localhost} build: dockerfile: .docker/Dockerfile context: . args: - VERSION=${VERSION:-8.1-apache} - USER_ID=${USER_ID:-1000} - GROUP_ID=${GROUP_ID:-1000} - NODE_VERSION=${NODE_VERSION:-16.20.1} - INSTALL_XDEBUG=${INSTALL_XDEBUG:-false} environment: DISABLE_MAKE: ${DISABLE_MAKE:-0} PS_INSTALL_AUTO: ${PS_INSTALL_AUTO:-1} DB_PASSWD: ${DB_PASSWD:-prestashop} DB_NAME: ${DB_NAME:-prestashop} DB_SERVER: ${DB_SERVER:-mysql} DB_PREFIX: ${DB_PREFIX:-ps_} PS_DOMAIN: ${PS_DOMAIN:-localhost:8001} PS_FOLDER_INSTALL: ${PS_FOLDER_INSTALL:-install-dev} PS_FOLDER_ADMIN: ${PS_FOLDER_ADMIN:-admin-dev} PS_COUNTRY: ${PS_COUNTRY:-fr} PS_LANGUAGE: ${PS_LANGUAGE:-en} PS_DEV_MODE: ${PS_DEV_MODE:-1} PS_ENABLE_SSL: ${PS_ENABLE_SSL:-0} PS_ERASE_DB: ${PS_ERASE_DB:-0} PS_USE_DOCKER_MAILDEV: ${PS_USE_DOCKER_MAILDEV:-1} ADMIN_MAIL: ${ADMIN_MAIL:-demo@prestashop.com} ADMIN_PASSWD: ${ADMIN_PASSWD:-Correct Horse Battery Staple} BLACKFIRE_ENABLE: ${BLACKFIRE_ENABLE:-0} BLACKFIRE_SERVER_ID: ${BLACKFIRE_SERVER_ID:-0} BLACKFIRE_SERVER_TOKEN: ${BLACKFIRE_SERVER_TOKEN:-0} command: /tmp/wait-for-it.sh --timeout=60 --strict mysql:3306 -- /tmp/docker_run_git.sh ports: - "8001:80" - "8002:443" depends_on: - mysql volumes: - ./:/var/www/html:delegated networks: - prestashop-network maildev: image: 'maildev/maildev' ports: - "1080:1080" networks: - prestashop-network networks: prestashop-network: name: prestashop-network
Dockerfile
Un Dockerfile est un fichier contenant une liste de commandes de ligne de commande que Docker exécute une à une dans le but de monter une image Docker pour faire tourner votre application.
Exemple de fichier
FROM node:20 WORKDIR /usr/src/app COPY package.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "server.js" ]
Construire une image
docker build -t <image_name> .
Autres commandes
Inspecter un container
docker inspect <container_name>
Inspecter une image
docker inspect <image_name>
Évènements
docker events
Statistiques
docker stats <container_name>
Exporter un container
docker export <container_name> -o <file_name>.tar
Importer un container
docker import <file_name>.tar
Sauver une image
docker save -o <file_name>.tar <image_name>
Charger une image
docker load -i <file_name>.tar