brew install colima
colima start --cpu 4 --memory 6Проверка контекста Docker:
docker context ls
# colima должен быть со звездочкой *FROM ghcr.io/azul-research/crac-java21:latest
RUN apt-get update && apt-get install -y criu
WORKDIR /app
COPY spring-petclinic.jar .
# ENTRYPOINT пустой — приложение запускается вручнуюСборка образа:
docker build -t petclinic-crac .mkdir cr
chmod 777 crdocker run --privileged -it --rm --network=host \
-v $PWD/cr:/app/cr \
petclinic-crac \
/opt/crac-jdk/bin/java -XX:CRaCCheckpointTo=/app/cr -jar /app/spring-petclinic.jar- Ждите появления в логах
Started PetClinicApplication.... - Не выключайте контейнер!
Как узнать ID контейнера:
docker ps
# CONTAINER ID для petclinic-cracЗайти внутрь:
docker exec -it <CONTAINER_ID> bashНайти PID Java:
ps aux | grep java
# Например, PID = 42Создать чекпоинт:
jcmd <PID> JDK.checkpoint
# Command executed successfullyПроверит наличие файлов:
ls /app/cr
# или локально
ls cr- Остановить первый контейнер (ctrl+C или docker stop).
docker run --privileged -it --rm --network=host \
-v $PWD/cr:/app/cr \
petclinic-crac \
/opt/crac-jdk/bin/java -XX:CRaCRestoreFrom=/app/crСмотреть строку в логах:
Started PetClinicApplication in 0.XXX seconds
# Старт с чекпоинтом
Spring-managed lifecycle restart completed (restored JVM running for 7625 ms)# Старт без чекпоинта
Started PetClinicApplication in 49.926 seconds (process running for 54.147)brew install colima
colima start --cpu 4 --memory 6
docker context ls
docker build -t petclinic-crac .
mkdir cr && chmod 777 cr
# Старт c чекпоинтом:
docker run --privileged -it --rm --network=host -v $PWD/cr:/app/cr petclinic-crac /opt/crac-jdk/bin/java -XX:CRaCCheckpointTo=/app/cr -jar /app/spring-petclinic.jar
# Второй терминал:
docker ps
docker exec -it <CONTAINER_ID> bash
ps aux | grep java
jcmd <PID> JDK.checkpoint
# Восстановление:
docker run --privileged -it --rm --network=host -v $PWD/cr:/app/cr petclinic-crac /opt/crac-jdk/bin/java -XX:CRaCRestoreFrom=/app/cr