Skip to content

Instantly share code, notes, and snippets.

@Machou
Last active October 17, 2023 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Machou/985f8b8b9730f8388756c139aa357471 to your computer and use it in GitHub Desktop.
Save Machou/985f8b8b9730f8388756c139aa357471 to your computer and use it in GitHub Desktop.

Aide-mémoire Docker

Commandes rapides

alias up="docker compose up -d"

alias dps="clear && docker ps -a"
alias di="clear && docker images -a"
alias dn="clear && docker network ls"
alias dall="clear && docker ps -a && docker images -a && docker network ls"

alias dpi="clear && docker image prune -a"
alias dpn="clear && docker network prune --force"
alias dps="clear && docker system prune -a"
alias drs="clear && docker restart $(docker ps -a -q)"

Créer une image

  1. On créé le Dockerfile

cd projet/ && nano Dockerfile

  1. On écrit les commandes
FROM alpine:3.x :14, 15, 16, 17, etc.

RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_19.x | bash \
&& apt-get install nodejs -yq \
&& apt-get clean -y
  1. Copier / télécharger des fichier dans l’image avec ADD

ADD . /app/

  1. Modifier le répertoire courant (équivalent à cd)

WORKDIR /app

  1. On install le paquet Node.js avec RUN

RUN npm install

  1. Informations diverses

EXPOSE : indique le port sur lequel votre application écoute

VOLUME : indique quel répertoire on veut avec votre host

EXPOSE 2368

VOLUME /app/logs
  1. Lancer la commande de démarrage

CMD npm run start

  1. Récapitulatif
FROM alphine:3.x : 14, 15, 16, 17, etc.

RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_19.x | bash \
&& apt-get install nodejs -yq \
&& apt-get clean -y

ADD . /app/
WORKDIR /app
RUN npm install

EXPOSE 2368
VOLUME /app/logs

CMD npm run start
  1. On peut utiliser un .gitignore
node_modules
.git
  1. On créé l’image

-t : donne un nom à l’image . : le répertoire où se trouve le Dockerfile ; dans notre cas, à la racine du projet

docker build -t ocr-docker-build .

  1. On lance le conteneur

docker run -d -p 2368:2368 ocr-docker-build

Les logs : dans le dossier logs/ L’adresse : http://127.0.0.1:2368.

Exemple d’installation de FlareSolverr via docker-compose.yml

  1. Cloner le dépôt

git clone https://github.com/FlareSolverr/FlareSolverr.git && cd FlareSolverr

  1. Installer le conteneur

docker compose up -d

Exemple d’installation de Kali

Site officiel

docker pull docker.io/kalilinux/kali-rolling

docker run --tty --interactive kalilinux/kali-rolling

Exemple d’installation de Bitwarden

Site officiel

  1. Création de l’utilisateur

sudo adduser Bitwarden

  1. Création du mot de passe

sudo passwd bitwarden

  1. Création du groupe

sudo groupadd Docker

  1. Ajout au groupe docker

sudo usermod -aG docker Bitwarden

  1. Création du répertoire

sudo mkdir /opt/Bitwarden

  1. Ajout des permissions

sudo chmod -R 700 /opt/Bitwarden

  1. Ajout des droits

sudo chown -R bitwarden:bitwarden /opt/Bitwarden

Exemple d’installation de Gladys

Site officiel

  1. Mettre à jour
sudo apt update
sudo apt upgrade
  1. Installer Docker sur la VM
sudo apt install docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker gladys
  1. Lancer Gladys
docker run -d \
--log-driver json-file \
--log-opt max-size=10m \
--cgroupns=host \
--restart=always \
--privileged \
--network=host \
--name gladys \
-e NODE_ENV=production \
-e SERVER_PORT=80 \
-e TZ=Europe/Paris \
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/gladysassistant:/var/lib/gladysassistant \
-v /dev:/dev \
-v /run/udev:/run/udev:ro \
gladysassistant/gladys:v4
  1. Mise à jour automatique avec Watchtower
docker run -d \
  --name watchtower \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --cleanup --include-restarting

Les conteneurs

Lancer un conteneur via une image

docker run _image_

docker run nginx

... et assigner lui un nom

docker run --name _conteneur_ _image_

docker run --name web nginx

... avec un port

docker run -p _port_:_conteneur_port_ _image_

docker run -p 8080:80 nginx

... affecter tous les ports

docker run -P _image_

docker run -P nginx

... lancer les conteneurs en tâche de fond

docker run -d _image_

docker run -d nginx

... assigner un hostname

docker run --hostname _hostname_ _image_

docker run --hostname srv nginx

... ajouter une entrée DNS

docker run --add-host _hostname_:_ip_ _image_

... ajouter un répertoire au conteneur

docker run -v _dossier_host_:_dossier_cible_ _image_

docker run -v ~/:/usr/share/nginx/html nginx

... changer le point d'entrer

docker run -it --entrypoint _executable_ _image_

docker run -it --entrypoint bash nginx

Afficher la liste de tous les conteneurs lancés

docker ps

Afficher tous les conteneurs

docker ps -a

Supprimer un conteneur

docker rm _conteneur_

docker rm web

Supprimer un conteneur en cours d'exécution

docker rm -f _conteneur_

docker rm -f web

Supprimer tous les conteneurs stoppés

docker container prune

Stopper un conteneur en cours d'exécution

docker stop _conteneur_

docker stop web

Lancer un conteneur arrêté

docker start _conteneur_

docker start web

Copier un fichier d'un conteneur vers un PC

docker cp _conteneur_:_source_ _cible_

docker cp web:/index.html index.html

Copier un fchier d'un PC vers un conteneur

docker cp _cible_ _conteneur_:_source_

docker cp index.html web:/index.html

Lancer un shell à l'intérieur d'un conteneur lancé

docker exec -it _conteneur_ _executable_

docker exec -it web bash

Renommer un conteneur

docker rename _ancien_nom_ _nouveau_nom_

docker rename 096 web

Créer une image d'un conteneur

docker commit _conteneur_

docker commit web

Les images

Télécharger une image

docker pull _image_:_tag_

docker pull nginx

docker pull nginx:latest

Uploader une image vers dépôt

docker push _image_

docker push myimage:1.0

Supprimer une image

docker rmi _image_

Afficher toutes les images

docker images

Supprimer toutes les images

docker image prune

Supprimer toutes les images sans qu'un conteneur au moins ne leur soit associé

docker image prune -a

Les volumes

Lister les volumes

docker volume ls

Contrôler le volume

docker volume inspect <volume_id> ou <volume_nom>

Créer un volume

docker volume create <volume_id> ou <volume_nom>

Supprimer un volume

docker volume rm <volume_id> ou <volume_nom>

Supprimer les volumes inutilisés

docker volume prune

Chercher une image

docker search

Créer une image d'un fichier Dockerfile

docker build _dossier_

docker build .

Tagger une image

docker tag _image_ _nouvelle_image_

docker tag ubuntu ubuntu:21.10

Créer et tagger une image d'un fichier Dockerfile

docker build -t _image_ _dossier_

docker build -t myimage .

Sauvegarder une image vers un fichier .tar

docker save _image_ > _fichier_.tar

docker save nginx > nginx.tar

Charger une image d'un fichier .tar

docker load -i _fichier_tar_

docker load -i nginx.tar

Infos, statistiques & dépannage

Afficher l'espace utiliser par le disque Docker

docker system df _options_

Obtenir des événements en temps réel du serveur

docker system events _options_

Afficher les informations relatives au système

docker system info _options_

Supprimer les données inutilisées

docker system prune _options_

Inspecter les modifications apportées aux fichiers ou aux répertoires du système de fichiers d'un conteneur

docker diff _conteneur_

Afficher les logs d'un conteneur

docker logs _conteneur_

docker logs web

Afficher les statistiques des conteneurs lancés

docker stats

Afficher les processus d'un conteneur

docker top _conteneur_

docker top web

Afficher la version de Docker

docker version

Afficher les informations détaillées d'un objet

docker inspect _conteneur_

docker inspect nginx

Afficher tous les fichiers dans un conteneur

docker diff _conteneur_

docker diff web

Afficher les ports utilisés par un conteneur

docker port _conteneur_

docker port web

Divers

Afficher les logs d’un conteneur

docker logs -f _conteneur_

... ajouter l’horodatage

docker logs -f --timestamps _conteneur_

Lister les réseaux Docker

docker network ls

Supprimer les réseaux Docker inutilisés

docker network prune

Supprimer un réseau Docker

docker network rm _reseau_id

docker network rm da938jf8dud

Afficher les premières 100 lignes d'un conteneur

docker container logs --tail 100 c97a6cdcc341

docker image rm c1949ec48c51

Arrêter un conteneur

docker ps

docker stop _conteneur_

docker rm _conteneur_

docker container stop _conteneur_

docker container kill _conteneur_

Lancer un conteneur

docker run --name=_conteneur_nom_ _options_ _docker_image_

Construire une image à partir du Dockerfile dans le répertoire courant et marquer l'image

docker build -t _conteneur_

Lancer un scan sur un blog

docker run -it --rm wpscanteam/wpscan --url https://www.domaine.com/ --enumerate u

docker run -it --rm wpscanteam/wpscan --url https://www.domaine.com/ --enumerate u1-100

Lancer un conteneur MySQL

docker run --name=mysql --restart=always -e MYSQL_ROOT_PASSWORD=motdepasse -v /dossier:/var/lib/mysql -d mysql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment