수색…


검사 점 및 복원 기능을 사용하여 도커 컴파일 (우분투)

도커를 컴파일하려면 권장되는 RAM 용량이 2GB 이상이어야합니다. 그것으로도 때때로 가끔 실패하므로 대신 4GB를 사용하는 것이 좋습니다.

  1. 자식과 make가 설치되어 있는지 확인하십시오.

    sudo apt-get install make git-core -y
    
  2. 새 커널을 설치하십시오 (4.2 이상).

    sudo apt-get install linux-generic-lts-xenial
    
  3. 새 커널을 활성화하려면 시스템을 재부팅하십시오.

    sudo reboot
    
  4. docker checkpoint 를 실행하기 위해 필요한 컴파일 criu

    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. criu를 실행하기 위해 모든 요구 사항이 충족되는지 확인하십시오.

    sudo criu check
    
  6. 실험용 도커를 컴파일합니다 (도커를 컴파일하려면 도커가 필요함).

    cd ~
    wget -qO- https://get.docker.com/ | sh
    sudo usermod -aG docker $(whoami)
    
  • 이 시점에서 우리는 로그 오프하고 다시 로그인하여 docker 데몬을 갖습니다. relog 이후에 컴파일 단계를 계속하십시오.

    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. 우리는 이제 컴파일 된 도커를 가지고 있습니다. 바이너리를 옮길 수 있습니다. <version> 을 설치된 <version> 으로 바꾸십시오.

    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
    

걱정 마세요. 이전 바이너리를 백업했습니다. 그들은 여전히 ​​거기에 있지만 이름에 밑줄이 붙습니다 ( docker_ ).

축하합니다. 컨테이너를 체크 포인트하고 복원 할 수있는 실험용 도커가 있습니다.

실험 기능은 제작 준비가되지 않았 음을 유의하십시오.

검사 점 및 컨테이너 복원

# 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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow