12
mars 2018

Sauvegarde des images et paramètres de lancement d'un container Docker

Sauvegarde des images et paramètres de lancement d'un container Docker

Avec Docker il est très facile de déployer des "machines" de tests qui n'auront pas beaucoup d'impact si tout n'est pas remonté dans les 30mn en cas de crash. Mais dans le cas d'une infra en production il est important de pouvoir remonter une "machine" à l'état identique avant un crash. Par identique j'entends données et paramètres. Docker intègre tout ce qu'il faut pour sauvegarder les données mais rien pour les paramètres de lancement du container.

Sauvegarde et restauration d'une image

J'utilise les outils proposé par Docker

# docker save -o /save/mon-image.tar mon-image

Pour la restauration

# docker load -i /tmp/mon-image.tar

Pour visualiser le résultat utiliser la commande

# docker images

Votre image doit apparaître. Maintenant il faut lancer le container mais comme il tourne depuis de nombreux mois vous ne vous rappelez pas des paramètres de lancement et bien sûr plus de trace du Dockerfile.

Sauvegarder les paramètres d'un container

Pour le moment il n'existe pas d'outils intégré donc il va falloir jongler avec docker et rekcod (merci palm123 de linuxfr). Pour obtenir l'état d'un container il faut utiliser

# docker inspect test

 

[

    {

        "Id": "bfe527876bc3d27b9db1a46cf9f1f82510465327daace81c7a74b3d360f7a507",

        "Created": "2018-03-12T14:04:00.858259025Z",

        "Path": "/bin/bash",

        "Args": [],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 17803,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2018-03-12T14:04:01.329352727Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        },

[...]

]

 

Vous obtenez une sortie en json. Je vous laisse analyser votre sortie mais tout ce qu'il nous faut est présent. Reste plus qu'à le transformer en commande docker.

# docker inspect test > /tmp/test.json

# rekcod test.json > /tmp/test.doc

# cat /tmp/test.doc

docker run --name test -p 2223:22/tcp --net bridge --restart no -h 75cf1a36c945 --expose 22/tcp -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'LANG=fr_FR.utf8' -d -t -i --entrypoint "/bin/bash" test:latest

Et voilà vous pouvez lancer la commande contenu dans le fichier. Après il vous reste plus qu'à intégrer tout ça dans votre processus de sauvegarde.

Administrateur système de métier mais surtout curieux de découvrir de nouvelles technos très orientées DIY. A mes heures perdues je fais de la photo avec toujours une petite envie d'intégrer des DIY sous forme de timelaps à base de raspberry.

Écrire un commentaire

Quelle est la deuxième lettre du mot zaix ? :

Sauvegarde des images et paramètres de lancement d'un container Docker - Philippe Maladjian - Péripéties bucoliques d'un administrateur systèmes au royaume de la virtualisation, du stockage et accessoirement photographe à ses heures perdues