User Tools

Site Tools


informatique:logiciels:docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:docker [2024/08/20 09:00] pteuinformatique:logiciels:docker [2024/09/20 15:29] (current) pteu
Line 16: Line 16:
 =====Généralités===== =====Généralités=====
  
-Il faut être root pour utiliser docker (par défaut en tout cas). On peut obtenir de l'aide pour chaque commande avec ''docker <command> --help''.+Il faut être root pour utiliser docker (par défaut en tout cas). On peut obtenir de l'aide pour chaque commande avec ''docker <command> %%--help%%''.
  
 Vérification de la version : Vérification de la version :
Line 70: Line 70:
 Action sur les conteneurs Action sur les conteneurs
 <code bash> <code bash>
-# démarrer arrêter un conteneur 
-docker start alpine 
-docker stop alpine 
- 
-# supprimer un conteneur (-f pour forcer même s'il est en fonctionnement) 
-docker rm (-f) <conteneur1> 
- 
 # lister les conteneurs # lister les conteneurs
 docker ps docker ps
 docker container ls docker container ls
- 
 # pour lister aussi les conteneurs arrêtés # pour lister aussi les conteneurs arrêtés
 docker ps -a docker ps -a
 CONTAINER ID   IMAGE         COMMAND    CREATED        STATUS                    PORTS     NAMES CONTAINER ID   IMAGE         COMMAND    CREATED        STATUS                    PORTS     NAMES
 f8b7c15f443f   hello-world   "/hello"   8 months ago   Exited (0) 8 months ago             frosty_napier f8b7c15f443f   hello-world   "/hello"   8 months ago   Exited (0) 8 months ago             frosty_napier
 +
 +# démarrer arrêter un conteneur
 +docker start alpine
 +docker stop alpine
 +
 +# supprimer un conteneur (-f pour forcer même s'il est en fonctionnement)
 +docker rm (-f) <conteneur1>
 +
 +# supprimer les conteneurs non utilisés
 +docker container prune
 </code> </code>
  
Line 90: Line 92:
 =====Images===== =====Images=====
  
-Ce sont des "pré-conteneurs" à instancier (personnaliser) et installer ; leur nommage est de type : ''image:version''.+Ce sont des "pré-conteneurs" à instancier (personnaliser) et installer ; leur nommage est de type : ''image:version''. On peut les télécharger depuis un repository, celui par défaut est le [[https://hub.docker.com/|docker hub]].
  
 <code bash> <code bash>
 # lister les images # lister les images
 docker images docker images
-#(ou docker image ls)+#(ou "docker image ls")
  
 # télécharger une image # télécharger une image
 docker pull pihole docker pull pihole
 +
 +# supprimer les images inutilisées
 +docker image prune
  
 # créer image à partir d'un conteneur # créer image à partir d'un conteneur
Line 106: Line 111:
 docker history <ID_image> docker history <ID_image>
 </code> </code>
 +
  
 =====Registres (d'images)===== =====Registres (d'images)=====
  
 Les "registry" sont des bases d'images Docker ; le "registre officiel" est le [[https://hub.docker.com/|Docker Hub]] mais il en existe moult ([[https://github.com/linuxserver|LinuxServer.io]] par exemple). Les "registry" sont des bases d'images Docker ; le "registre officiel" est le [[https://hub.docker.com/|Docker Hub]] mais il en existe moult ([[https://github.com/linuxserver|LinuxServer.io]] par exemple).
 +
  
 =====Build===== =====Build=====
Line 132: Line 139:
 # lister les réseaux (loopback) créés dans docker # lister les réseaux (loopback) créés dans docker
 docker network ls docker network ls
 +</code>
 +
 +Dans un docker compose, créer un réseau bridgé dont on maitrise l'adressage:
 +<code yaml>
 +networks:
 +  br-1:
 +    name: pont1
 +    driver: bridge
 +      ipam:
 +        config:
 +          - subnet: 172.17.17.0/24
 +            gateway: 172.17.17.254
 +[..]
 +services:
 +  myalpine:
 +    image: alpine
 +    container_name: myalpine
 +    command: sh
 +    network:
 +      - br-1
 +        name: pont1
 +        #external: true    # uniquement si le réseau a déjà été créé en dehors compose
 +        ipv4_address: 172.17.17.10
 +</code>
 +
 +Pour faire communiquer (basiquement) 2 réseaux docker il faut manipuler l'iptables du host :
 +<code bash>
 +iptables -I DOCKER-USER -i br-1 -o br-2 -j ACCEPT
 +iptables -I DOCKER-USER -i br-2 -o br-2 -j ACCEPT
 </code> </code>
  
  
 =====Volumes===== =====Volumes=====
 +
 +Permet de faire persister les données entre plusieurs lancements de conteneurs, en montant un volume sur le système de fichier de la machine hôte.
  
 <code bash> <code bash>
-docker volume ls +docker volume ls (-a) 
-docker volume create monvolume +docker volume create <monvolume> 
-docker volume rm monvolume+docker volume rm <monvolume
 +docker volume prune
 </code> </code>
  
 =====Compose===== =====Compose=====
  
-docker compose: permet de créer et ordonnancer de multiples conteneurs pour monter un service (site web + BDD + etc) ; il utilise des fichiers yml pour définir le service+docker compose: permet de créer et ordonnancer de multiples conteneurs pour monter un "service(site web + BDD + etc) ; il utilise des fichiers yml pour définir le service
  
 <code bash> <code bash>
 +docker compose version
 +
 +docker compose build
 +
 # https://docs.docker.com/compose/gettingstarted/ # https://docs.docker.com/compose/gettingstarted/
 mkdir nextcloud && cd nextcloud mkdir nextcloud && cd nextcloud
Line 156: Line 199:
 # afficher les logs # afficher les logs
 docker-compose logs -f docker-compose logs -f
-# arrêter le conteneur +# arrêter les conteneurs (-v pour supprimer les volumes également) 
-docker-compose down+docker-compose down (-v)
 ! !
 docker compose pull ? docker compose pull ?
 </code> </code>
  
 +Mettre à jour un conteneur existant (exemple avec technitium/dns-server):
 +<code bash>
 +docker compose down
 +docker image rm technitium/dns-server
 +docker compose up -d
 +</code>
 ===== Gestion des logs===== ===== Gestion des logs=====
  
informatique/logiciels/docker.1724144440.txt.gz · Last modified: 2024/08/20 09:00 by pteu