Recherche…


Compiler le menu fixe avec le point de contrôle et la restauration activés (Ubuntu)

Pour compiler docker, il est recommandé d'avoir au moins 2 Go de RAM . Même si cela échoue parfois, il vaut mieux opter pour 4 Go à la place.

  1. assurez-vous que git et make sont installés

    sudo apt-get install make git-core -y
    
  2. installer un nouveau noyau (au moins 4.2)

    sudo apt-get install linux-generic-lts-xenial
    
  3. redémarrer la machine pour que le nouveau noyau soit actif

    sudo reboot
    
  4. compiler criu qui est nécessaire pour exécuter le docker checkpoint

    sudo apt-get install libprotobuf-dev libprotobuf-c0-dev protobuf-c-compiler protobuf-compiler python-protobuf libnl-3-dev libcap-dev -y
    wget http://download.openvz.org/criu/criu-2.4.tar.bz2 -O - | tar -xj
    cd criu-2.4
    make
    make install-lib
    make install-criu
    
  5. vérifier si chaque exigence est remplie pour exécuter criu

    sudo criu check
    
  6. compiler le docker expérimental (il faut docker pour compiler docker)

    cd ~
    wget -qO- https://get.docker.com/ | sh
    sudo usermod -aG docker $(whoami)
    
  • À ce stade, nous devons nous déconnecter et nous reconnecter pour avoir un démon docker. Après relog continuer avec l'étape de compilation

    git clone https://github.com/boucher/docker
    cd docker
    git checkout docker-checkpoint-restore
    make #that will take some time - drink a coffee
    DOCKER_EXPERIMENTAL=1 make binary
    
  1. Nous avons maintenant un menu fixe compilé. Permet de déplacer les binaires. Assurez-vous de remplacer <version> par la version installée

    sudo service docker stop
    sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/latest/binary-client/docker-<version>-dev $(which docker)
    sudo cp $(which docker-containerd) $(which docker-containerd)_ ; sudo cp ./bundles/latest/binary-daemon/docker-containerd $(which docker-containerd)
    sudo cp $(which docker-containerd-ctr) $(which docker-containerd-ctr)_ ; sudo cp ./bundles/latest/binary-daemon/docker-containerd-ctr $(which docker-containerd-ctr)
    sudo cp $(which docker-containerd-shim) $(which docker-containerd-shim)_ ; sudo cp ./bundles/latest/binary-daemon/docker-containerd-shim $(which docker-containerd-shim)
    sudo cp $(which dockerd) $(which dockerd)_ ; sudo cp ./bundles/latest/binary-daemon/dockerd $(which dockerd)
    sudo cp $(which docker-runc) $(which docker-runc)_ ; sudo cp ./bundles/latest/binary-daemon/docker-runc $(which docker-runc)
    sudo service docker start
    

Ne vous inquiétez pas - nous avons sauvegardé les anciens fichiers binaires. Ils sont toujours là mais avec un trait de soulignement ajouté à ses noms ( docker_ ).

Félicitations, vous avez maintenant un docker expérimental avec la possibilité de contrôler un conteneur et de le restaurer.

S'il vous plaît noter que les fonctionnalités expérimentales ne sont pas prêts pour la production

Point de contrôle et restauration d'un conteneur

# create docker container
export cid=$(docker run -d --security-opt seccomp:unconfined busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done')

# container is started and prints a number every second
# display the output with 
docker logs $cid

# checkpoint the container
docker checkpoint create $cid checkpointname

# container is not running anymore
docker np

# lets pass some time to make sure

# resume container
docker start $cid --checkpoint=checkpointname

# print logs again
docker logs $cid


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow