Documentation Docker
Commandes de base
Montrer
Afficher les conteneurs en cours d'exécution
docker ps
Afficher les conteneurs arrêtés
docker ps -a
Afficher les images
docker images
Accéder au terminal d'un conteneur en cours d'exécution
docker exec -it <container_name> sh # or bash
Monter
Monter une image
docker build <image_name>
Monter avec docker compose
docker compose up -d
Sauvegarder
Créer une sauvegarde d'un conteneur
docker save -o <save_name>.tar <image_name>
Supprimer
Un conteneur arrêté par ID
docker rm <container_id>
Tous les conteneurs arrêtés
docker rm $(docker ps -a -q)
Tous les conteneurs non démarrés
docker rm $(sudo docker ps -a -q -f 'status=exited')
Image inutilisée par ID
docker rmi <image_id>
Toutes les images inutilisées (non associées à un conteneur)
docker image prune
Volumes inutilisés
docker prune
Réseaux inutilisés
docker network prune
Nettoyer
Supprimer tous les objets inutilisés (conteneurs, images, volumes et réseaux)
docker system prune
Supprimer tous les objets inutilisés, avec des conteneurs en cours d'exécution
docker system prune -a
Nettoyage complet
docker system prune --volumes -a
Monter
Monter une image avec un
Dockerfile
docker build -t <image_name> .
Exécuter
Exécuter une image
docker run --name <container_name> <image_name>
Exécuter une image sur un port
docker run --name <container_name> -p 3000:3000 <image_name>
Charger
Charger une image à partir d'un fichier
.tar
docker load --input <file_name>.tar
Network
Créer un réseau Docker
docker network create --subnet 172.20.0.0/16 <network_name>
Afficher les réseaux
docker network ls
Afficher les détails d'un réseau
docker network inspect <network_name>
Lier un réseau à un conteneur
docker network connect --ip 172.20.0.5 <network_name> <container_name>
Stack
Lister les services d'une stack
docker stack services <stack_name>
Afficher les logs
docker service logs <stack_name_service>
Utiliser l'attribut -f
pour afficher les logs en temps réel.
Supprimer une stack
docker stack rm <stack_name>
Exemples Dockerfile
Nuxt JS
Production
# syntax=docker/dockerfile:1
ARG NODE_VERSION=21.0.0
ARG PORT=3000
FROM node:${NODE_VERSION}-alpine as base
WORKDIR /app
FROM base as build
COPY package.json /app/
COPY pnpm-lock.yaml /app/
# Install pnpm
RUN npm install -g pnpm
# Install all dependencies
RUN pnpm install
ADD . /app
RUN pnpm run build
FROM base
EXPOSE $PORT
COPY --from=build /app/.output /app/.output
CMD ["node", ".output/server/index.mjs"]
services:
production:
platform: linux/amd64 # Add this code for Apple Silicon
build:
context: .
ports:
- "3001:3000"
Développement
# syntax = docker/dockerfile:1
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-slim as base
ENV NODE_ENV=development
WORKDIR /src
# Build
FROM base as build
COPY --link package.json package-lock.json .
RUN npm install
# Run
FROM base
COPY --from=build /src/node_modules /src/node_modules
CMD [ "npm", "run", "dev" ]
volumes:
node_modules:
services:
development:
build:
context: .
dockerfile: ./Dockerfile.dev
ports:
- "3000:3000"
- "24678:24678"
volumes:
- .:/src
- node_modules:/src/node_modules
Exécuter l'environnement de développement
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build
Fast API
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade -r requirements.txt
COPY . .
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "80"]