Suche…


Docker mit Checkpoint und Wiederherstellung (Ubuntu) kompilieren

Um Docker zu kompilieren, wird empfohlen, dass Sie mindestens 2 GB RAM haben . Trotzdem fällt es manchmal aus, so dass es besser ist, stattdessen 4 GB zu verwenden.

  1. Stellen Sie sicher, dass git und make installiert sind

    sudo apt-get install make git-core -y
    
  2. Installieren Sie einen neuen Kernel (mindestens 4.2)

    sudo apt-get install linux-generic-lts-xenial
    
  3. Starten Sie den Computer neu, um den neuen Kernel zu aktivieren

    sudo reboot
    
  4. kompiliere criu das benötigt wird, um den docker checkpoint auszuführen

    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. Prüfen Sie, ob alle Anforderungen erfüllt sind, um criu auszuführen

    sudo criu check
    
  6. experimentelles Docker kompilieren (wir benötigen Docker, um Docker zu kompilieren)

    cd ~
    wget -qO- https://get.docker.com/ | sh
    sudo usermod -aG docker $(whoami)
    
  • An diesem Punkt müssen wir uns abmelden und erneut anmelden, um einen Docker-Daemon zu haben. Nach dem relog fahren Sie mit dem Kompilierungsschritt fort

    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. Wir haben jetzt ein kompiliertes Docker. Lässt die Binärdateien verschieben. Stellen Sie sicher, dass Sie <version> durch die installierte Version ersetzen

    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
    

Machen Sie sich keine Sorgen - wir haben die alten Binärdateien gesichert. Sie sind immer noch da, jedoch mit einem Unterstrich ( docker_ ).

Herzlichen Glückwunsch, Sie haben jetzt ein experimentelles Andockgerät mit der Möglichkeit, einen Container zu überprüfen und ihn wiederherzustellen.

Bitte beachten Sie, dass experimentelle Funktionen NICHT für die Produktion bereit sind

Prüfpunkt und Wiederherstellen eines Containers

# 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow