Zoeken…


Compileer docker met checkpoint en herstel ingeschakeld (ubuntu)

Om docker te compileren is het aanbevolen dat u minimaal 2 GB RAM hebt . Zelfs met dat faalt het soms, dus het is beter om in plaats daarvan voor 4GB te gaan.

  1. zorg ervoor dat git en make is geïnstalleerd

    sudo apt-get install make git-core -y
    
  2. installeer een nieuwe kernel (minimaal 4.2)

    sudo apt-get install linux-generic-lts-xenial
    
  3. start de machine opnieuw op om de nieuwe kernel actief te hebben

    sudo reboot
    
  4. compileer criu die nodig is om criu 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. controleer of aan alle vereisten is voldaan om criu uit te voeren

    sudo criu check
    
  6. compileer experimenteel docker (we hebben docker nodig om docker te compileren)

    cd ~
    wget -qO- https://get.docker.com/ | sh
    sudo usermod -aG docker $(whoami)
    
  • Op dit punt moeten we uitloggen en opnieuw inloggen om een docker daemon te hebben. Na opnieuw inloggen gaat u verder met compileren

    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. We hebben nu een gecompileerde docker. Laten we de binaire bestanden verplaatsen. Zorg ervoor dat <version> vervangen door de geïnstalleerde versie

    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
    

Maak je geen zorgen - we hebben een back-up gemaakt van de oude binaries. Ze zijn er nog steeds, maar met een onderstrepingsteken toegevoegd aan de namen ( docker_ ).

Gefeliciteerd, u hebt nu een experimenteel koppelapparaat met de mogelijkheid om een container te controleren en te herstellen.

Merk op dat experimentele functies NIET klaar zijn voor productie

Controlepunt en herstel een container

# 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow