Docker : Différence entre versions

De TechWik
Aller à : navigation, rechercher
m (Build images)
m
Ligne 21 : Ligne 21 :
 
* push/pull :
 
* push/pull :
 
   $ docker pull <image>
 
   $ docker pull <image>
 +
* renommer une image
 +
  $ docker image ls
 +
  REPOSITORY          TAG                IMAGE ID            CREATED            SIZE
 +
  c7_dev              latest              744765ef7a95        4 days ago          333MB
 +
  $ docker tag c7_dev:latest c7tools:1.0
 +
  $ docker image ls
 +
  REPOSITORY          TAG                IMAGE ID            CREATED            SIZE
 +
  c7tools            1.0                744765ef7a95        4 days ago          333MB
 +
  c7_dev              latest              744765ef7a95        4 days ago          333MB
 +
 
* suppression/pull :
 
* suppression/pull :
 
   $ docker image rm <image>...
 
   $ docker image rm <image>...
Ligne 37 : Ligne 47 :
 
== commandes image build ==
 
== commandes image build ==
 
Depuis le répertoire contenant le Dockerfile
 
Depuis le répertoire contenant le Dockerfile
 +
  $ docker builmt [-t <name>[:<vers>]] .
  
 +
== stockage docker ==
 +
ls /var/
 
== Dockerfile ==
 
== Dockerfile ==
  
=== VOLUME - partage de volume avec le conteneur ===
+
=== VOLUME - partage de dossiers avec le conteneur ===
Dans le Dockerfile:
+
Pas de déclaration dans le Dockerfile (c'est pour les volumes anonymes)
  VOLUME /app/logs /app/ro_data
 
 
 
  RUN mkdir -p /app/logs
 
 
 
  CMD find . /app -ls > /app/logs/output.txt
 
  
A l'execution :
+
A l'execution d'un conteneur:
 
   $ docker run -v $(pwd)/logs:/app/logs $(pwd)/ro_data:/app/ro_data:ro  myimg
 
   $ docker run -v $(pwd)/logs:/app/logs $(pwd)/ro_data:/app/ro_data:ro  myimg
  
 
L'image voit le contenu du répertoire logs, et les logs écrits dedans donc persistants.
 
L'image voit le contenu du répertoire logs, et les logs écrits dedans donc persistants.
 
L'image voit le contenu du répertoire ro_data en lecture seule.
 
L'image voit le contenu du répertoire ro_data en lecture seule.
 +
 +
voir https://docs.docker.com/storage/volumes/
  
 
= docker-compose =
 
= docker-compose =

Version du 20 novembre 2020 à 13:20

Docker tips & tricks

commandes docker-ce

instances

  • démarrer :
 $ docker run [-ai] [--name myOwnName] <image>
 $ docker start [-ai] <instance>
  • demarrer en interactif avec un shell (ne lance pas l'éventuelle commande CMD). en supprimant l'instance à sa sortie.
 $ docker run --rm -it <image> sh
  • attacher avec un shell a une image active
 $ docker exec -it <image> sh
  • arrêter:
 $ docker stop <image>

images

  • push/pull :
 $ docker image ls
 $ docker images
  • push/pull :
 $ docker pull <image>
  • renommer une image
 $ docker image ls
 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
 c7_dev              latest              744765ef7a95        4 days ago          333MB
 $ docker tag c7_dev:latest c7tools:1.0
 $ docker image ls 
 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
 c7tools             1.0                 744765ef7a95        4 days ago          333MB
 c7_dev              latest              744765ef7a95        4 days ago          333MB

  • suppression/pull :
 $ docker image rm <image>...
 $ docker rmi <image>...
  • supprimer les images inutilisées :
 $ docker image prune
  • inspecter les images :
 $ docker inspect <image>

nettoyage

  • supprimer les ressources inutiles (images et instances stoppées):
 $ docker system prune

Fabriquer des images

commandes image build

Depuis le répertoire contenant le Dockerfile

 $ docker builmt [-t <name>[:<vers>]] . 

stockage docker

ls /var/

Dockerfile

VOLUME - partage de dossiers avec le conteneur

Pas de déclaration dans le Dockerfile (c'est pour les volumes anonymes)

A l'execution d'un conteneur:

 $ docker run -v $(pwd)/logs:/app/logs $(pwd)/ro_data:/app/ro_data:ro  myimg

L'image voit le contenu du répertoire logs, et les logs écrits dedans donc persistants. L'image voit le contenu du répertoire ro_data en lecture seule.

voir https://docs.docker.com/storage/volumes/

docker-compose

commandes

  • docker-compose up -d vous permettra de démarrer l'ensemble des conteneurs en arrière-plan ;
  • docker-compose ps vous permettra de voir le status de l'ensemble de votre stack ;
  • docker-compose logs -f --tail 5 vous permettra d'afficher les logs de votre stack ;
  • docker-compose stop vous permettra d'arrêter l'ensemble des services d'une stack ;
  • docker-compose down vous permettra de détruire l'ensemble des ressources d'une stack ;
  • docker-compose config vous permettra de valider la syntaxe de votre fichier docker-compose.yml.

Astuces divers points

commandes docker sans sudo

Message d'erreur:

 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get     
 http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission denied
 
 $ ls -l /var/run/docker.sock
 srw-rw----. 1 root docker 0 Nov 17 14:29 /var/run/docker.sock

Ajouter le groupe docker a l'utilisateur

 $ sudo usermod -a -G docker myusername

Trouver les images dépendant d'une image

Cas d'usage: supprimer une image retourne l'erreur "image has dependent child images"

 $ docker image rm 7f6c67ae7dae 
 Error response from daemon: conflict: unable to delete 7f6c67ae7dae (cannot be forced) - image has dependent child images

définir la fonction (ex dans bashrc)

 docker_image_desc() {
   for image in $(docker images --quiet --filter "since=${1}"); do
     if [ $(docker history --quiet ${image} | grep ${1}) ]; then
       docker_image_desc "${image}"
     fi
   done
   echo "${1}"
 }

et:

 $ docker_image_desc 7f6c67ae7dae 
 76b749bf3727
 7f6c67ae7dae