Table des matières

Orchestrer ses applications avec parcimonie (Docker)

Voici une liste non exhaustive des commandes les plus courantes pour la version 1.12 et 1.13.

Manipuler les conteneurs

En reprenant exemple de ce simple conteneur, il est possible de :

docker stop web
docker start web
docker rm web
docker logs web
docker logs -f web 
docker reload web
docker top web
docker inspect web
docker inspect web
docker exec web du -h -d1
docker exec -it dockercompose_bdd_1 bash
docker network connect mon_reseau_perso web
docker network disconnect mon_reseau_perso web

Manipuler les images

Admettons que nous utilisons l'image nginx, il est possible de :

docker pull nginx
docker inspect nginx
docker history nginx
docker search nginx
docker rmi nginx
docker save nginx > site.tar.gz
docker image load < site.tar.gz

Manipuler les volumes

Admettons que nous avons un serveur (192.168.1.230) dont il partage le dossier “partage” via NFS. On verra alors :

 docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.230,rw --opt device=:/partage --name root
# Pout un conteneur :
 docker run -itd --name nfs -v root:/mnt/ debian:jessie-slim
 
 # Pour un service (il faudra déclarer le volume sur tous les nodes explicitement!):
 docker service create --mount type=volume,source=root,target=/var/www/html -p 80:80 eboraas/apache-php
 
 # Sur le serveur faire ceci pour voir les connexions en cours lors d'un scale de service : 
 netstat -an | grep 2049
 
 # Mais ne fonctionne pas pour :
 docker service create --mount type=volume,volume-opt=o=addr=192.168.1.230,volume-opt=device=/partage,volume-opt=type=nfs,source=vol_nfs,target=/var/www/html --name nfs eboraas/apache-php

A effectuer lorsque l'on obtient ce type d'erreur : “no space left on device”

 docker volume rm prune

voici ce que ça peut donner si on déclare un volume dans un docker-file (nfs est expérimental) :

test_volume.yml
services:

  site:
    image: une_image
    volumes:
     - nfs:/var/www/html
 

volumes:
  nfs:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.230,rw
      device: ":/partage"
 
? https://docs.docker.com/compose/compose-file/#/external

Manipuler les réseaux

Bien entendu les réseaux sont eux aussi très personnalisable! Jusqu'aux VLans paraît-il.

Ainsi il est possible de faire :

ip addr add 10.12.0.117/21 dev br1
docker run -d --name web -p 10.12.0.117:80:80 nginx

Manipuler le système hôte

docker system df
docker system prune

Il reste encore plein d'autres découvrir! :)