Docker : Différence entre versions

De TechWik
Aller à : navigation, rechercher
m
m
Ligne 5 : Ligne 5 :
 
   $ docker run [-ai] <image>
 
   $ docker run [-ai] <image>
 
   $ docker start [-ai] <instance>
 
   $ docker start [-ai] <instance>
   
+
 
* demarrer en interactif avec un shell (ne lance pas l'éventuelle commande CMD).
+
* demarrer en interactif avec un shell (ne lance pas l'éventuelle commande CMD). en supprimant l'instance à sa sortie.
   $ docker run -it <image> sh
+
   $ docker run --rm -it <image> sh
  
 
* attacher avec un shell a une image active
 
* attacher avec un shell a une image active

Version du 20 novembre 2020 à 09:22

Docker tips & tricks

commandes docker-ce

instances

  • démarrer :
 $ docker run [-ai] <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 pull <image>
  • suppression/pull :
 $ docker image rm <image>...
 $ docker rmi <image>...
  • supprimer les images inutilisées :
 $ docker image prune

nettoyage

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

Build images

Dockerfile

VOLUME - partage de volume avec le conteneur

Dans le Dockerfile:

 VOLUME /app/logs /app/ro_data
 
 RUN mkdir -p /app/logs 
 
 CMD find . /app -ls > /app/logs/output.txt

A l'execution :

 $ 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.

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