Aller au contenu

Commandes Docker

commandes-docker
Cette fiche sert à rappeler les commandes des opérations courantes pour Docker.

Lancer un conteneur

docker run  hello-world

Lister les conteneurs

docker container ls
    ou
docker container ls -a

Lister les conteneurs en route

docker ps
ou 
docker ps -a

Afficher l'espace disque par volume et par conteneur

docker system df -v

Renommer un conteneur

docker rename idduconteneur nouveaunom

Arrêter, supprimer un conteneur

docker ps
docker stop ID_DU_CONTENEUR
docker rm ID_DU_CONTENEUR

Utilisation des ressources Docker

On peut connaître l’utilisation des ressources de tout nos conteneurs avec docker stats
docker stats
CONTAINER ID   NAME                      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
70a0036e3f42   grafana                   0.02%     90.04MiB / 3.832GiB   2.29%     268kB / 73.1kB    38.2MB / 897kB    12
aa112804701d   prestashop-prestashop-1   0.00%     381.2MiB / 3.832GiB   9.72%     33.9MB / 16.4MB   496MB / 81MB      12
81b6805b7958   prestashop-phpmyadmin-1   0.00%     59.95MiB / 3.832GiB   1.53%     820kB / 1.97MB    17.7MB / 274kB    11
cbbdfd1dc351   prestashop-mariadb-1      0.02%     161.2MiB / 3.832GiB   4.11%     6.7MB / 30.5MB    37.5MB / 70.2MB   20
52ff3ce2cdd4   some-mysql                0.04%     183.1MiB / 3.832GiB   4.67%     3.65kB / 0B       46.4MB / 289MB    27
0d30c50416ba   uptime-kuma               1.85%     175.4MiB / 3.832GiB   4.47%     6.29GB / 902MB    10.7GB / 33.8GB   19
de1fe729a910   watchtower                0.00%     10.48MiB / 3.832GiB   0.27%     2.25MB / 724kB    237MB / 0B        8
5ecb123fd655   prometheus                1.68%     399.3MiB / 3.832GiB   10.18%    71.5GB / 2.04GB   47.6GB / 19.8GB   9
f5d4531cb702   node_exporter             0.00%     11.56MiB / 3.832GiB   0.29%     75.8MB / 1.48GB   120MB / 0B        5
80ac1dc21666   influxdb_container        0.03%     110.6MiB / 3.832GiB   2.82%     6.52GB / 562MB    1.86GB / 7.37GB   12
69c71229285a   cadvisor                  1.72%     78.89MiB / 3.832GiB   2.01%     316MB / 18.9GB    461MB / 0B        13
c11fd0979a9a   snipeit_snipe-it_1        0.02%     191MiB / 3.832GiB     4.87%     1.02GB / 775MB    9.89GB / 95.7MB   18
2d48d154aaf6   snipe-mysql               0.04%     498.9MiB / 3.832GiB   12.71%    124MB / 994MB     849MB / 409MB     29
d851f1204226   dozzle                    0.00%     6.77MiB / 3.832GiB    0.17%     28.4MB / 167MB    117MB / 0B        10
b52b9d4ee829   portainer_portainer_1     0.00%     22.48MiB / 3.832GiB   0.57%     3.48GB / 720MB    2.5GB / 7.56GB    7

Ouvrir un shell dans son conteneur

On peut ouvrir un shell en tant qu’utilisateur normal, ou en sudo avec -u 0
docker exec -ti ID_DU_CONTENEUR bash
docker exec -ti -u 0 ID_DU_CONTENEUR bash
Pour ajouter un fichier à un conteneur qui tourne, il faut mettre à jour le conteneur afin de pouvoir télécharger wget par exemple
apt update && apt get -y upgrade
apt-get -y install wget 
wget URL_DU_FICHIER_A_TELECHARGER
Vous pouvez télécharger nano pour éditer un fichier de conf par exemple
apt-get -y install nano

Envoyer son image sur le Docker Hub

Pour envoyer une copie de son image sur son Docker Hub, il faut se connecter au hub avec vos identifiants, création de compte ici : Lien du Docker Hub
docker login
(se connecter avec vos IDs)
docker commit ID_DU_CONTENEUR pseudo_docker/repo:TAG
docker stop ID_DU_CONTENEUR
docker push pseudo_docker/repo:TAG

Création d'une image Docker

Pour créer une image, il faut créer un fichier “Dockerfile”, il faut le voir comme le sommaire d’une recette de cuisine d’une pièce montée, ou chaque instruction (appelée Layer), serait comme un nouvel étage de la pièce montée. Pour que le conteneur soit le plus performant possible il faut limiter le nombre d’étages de notre pièce montée. Une fois tout les instructions imprimées dans votre fichier, il suffit de lancer la commande :
docker build #nomdufichier
Il faut ensuite lister les images, tagger son image, et la pousser sur le Docker Hub
docker image -a
docker tag ID_DE_LIMAGE pseudo_docker/MON_IMAGE
dockerpush peudo_docker/MON_IMAGE

Supprimer une image

Pour supprimer une image il faut utiliser docker images et docker rmi
docker images
docker rmi nom_image

Réparer Docker

Parfois Docker, ça marche pas. Il faut lancer ces commandes affin de repartir proprement.
docker system prune
wget -qO- https://get.docker.com/ | sh
systemctl restart docker.service
systemctl status docker.service

Copier des fichiers dans un conteneur

Pour copier des fichiers depuis sa machine hôte vers son conteneur, il faut utiliser docker cp
5GaiK
docker cp nomdufichier/ idconteneur:/dossier
Par exemple :
docker cp hello.txt 47e92dc425c4:/srv
On peut également faire l’inverse et donc copier des fichiers depuis un conteneur vers sa machine hôte :
qnhSi
docker cp 47e92dc425c4:/hello.txt /home/debian/
Ou bien d’un conteneur vers un autre avec la syntaxe suivante :
pGr45
docker cp 47e92dc425c4:/hello.txt .
docker exec -i 03e18e5de3d5 sh -c 'cat > ./hello.txt' < ./hello.txt

Error > port in use

Si docker vous dis que le port 53 est occupé, il faut relancer le service DNS pour lui laisser la place
systemctl stop systemd-resolved
systemctl disable systemd-resolved
systemctl restart systemd-resolved
Si un autre port est occupé, on peut utiliser lsof pour lister les processus qui utilisent le port, ici je vais regarder le port 22 par exemple
lsof -i :22
COMMAND     PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd        629 root    3u  IPv4     18451      0t0  TCP *:ssh (LISTEN)
sshd        629 root    4u  IPv6     18453      0t0  TCP *:ssh (LISTEN)
sshd    1987038 root    4u  IPv4 178802227      0t0  TCP addok:ssh->admin-serv79.umd.edu:53451 (ESTABLISHED)
On peut aussi tout lister avec ss
ss -lptun
tcp      LISTEN    0         4096                   [::]:9443                [::]:*        users:(("docker-proxy",pid=1750088,fd=4))
tcp      LISTEN    0         4096                   [::]:7878                [::]:*        users:(("docker-proxy",pid=1664290,fd=4))
tcp      LISTEN    0         4096                   [::]:9000                [::]:*        users:(("docker-proxy",pid=737485,fd=4))
tcp      LISTEN    0         4096                   [::]:9001                [::]:*        users:(("docker-proxy",pid=737663,fd=4))
tcp      LISTEN    0         50                     [::]:139                 [::]:*        users:(("smbd",pid=769,fd=48))
tcp      LISTEN    0         4096                   [::]:3020                [::]:*        users:(("docker-proxy",pid=1945500,fd=4))
tcp      LISTEN    0         4096                   [::]:3021                [::]:*        users:(("docker-proxy",pid=1945468,fd=4))

Plus d’informations sur : https://ldugrain.xyz/reseaulinux/