라이브 복원
라이브 복원 (Live restore)
기본적으로 Docker 데몬이 종료되면 실행 중인 컨테이너를 종료해요. 데몬을 사용할 수 없게 되어도 컨테이너가 계속 실행되도록 구성할 수 있어요. 이 기능을 라이브 복원(live restore) 이라고 해요. 라이브 복원 옵션은 데몬 크래시, 계획된 중단, 또는 업그레이드로 인한 컨테이너 다운타임을 줄이는 데 도움이 돼요.
Note 라이브 복원은 Windows 컨테이너에서는 지원되지 않지만, Docker Desktop for Windows에서 실행되는 Linux 컨테이너에서는 동작해요.
출처: 문서
본문
라이브 복원 활성화 (Enable live restore)
데몬을 사용할 수 없게 되어도 컨테이너를 살려 두도록 라이브 복원 설정을 활성화하는 두 가지 방법이 있어요. 다음 중 하나만 하세요.
- 데몬 구성 파일에 구성을 추가해요. Linux에서는 기본적으로
/etc/docker/daemon.json이에요. Docker Desktop for Mac 또는 Docker Desktop for Windows에서는 작업 표시줄에서 Docker 아이콘을 선택한 다음 Settings -> Docker Engine을 클릭해요.- 다음 JSON을 사용해
live-restore를 활성화해요.
- 다음 JSON을 사용해
{
"live-restore": true
}
* Docker 데몬을 재시작해요. Linux에서는 Docker 데몬을 리로드해 재시작을(그리고 컨테이너의 다운타임을) 피할 수 있어요. `systemd`를 사용한다면 `systemctl reload docker` 명령을 사용해요. 그렇지 않으면 `dockerd` 프로세스에 `SIGHUP` 신호를 보내요.
- 원한다면
--live-restore플래그로dockerd프로세스를 수동으로 시작할 수 있어요. 이 접근 방식은 Docker 프로세스를 시작할 때systemd나 다른 프로세스 매니저가 사용할 환경을 설정하지 않기 때문에 권장되지 않아요. 예기치 않은 동작을 일으킬 수 있어요.
업그레이드 중 라이브 복원 (Live restore during upgrades)
라이브 복원은 Docker 데몬 업데이트를 가로질러 컨테이너를 계속 실행할 수 있게 해주지만, 패치 릴리스(YY.MM.x)를 설치할 때만 지원되고 메이저(YY.MM) 데몬 업그레이드에서는 지원되지 않아요.
업그레이드 중에 릴리스를 건너뛰면 데몬이 컨테이너에 대한 연결을 복원하지 못할 수 있어요. 데몬이 연결을 복원할 수 없으면 실행 중인 컨테이너를 관리할 수 없고 그 컨테이너들을 수동으로 중지해야 해요.
재시작 시 라이브 복원 (Live restore upon restart)
라이브 복원 옵션은 브리지 IP 주소와 그래프 드라이버 같은 데몬 옵션이 변경되지 않은 경우에만 컨테이너를 복원하기 위해 동작해요. 이러한 데몬 수준 구성 옵션 중 하나라도 변경되면 라이브 복원이 동작하지 않을 수 있고 컨테이너를 수동으로 중지해야 할 수도 있어요.
실행 중인 컨테이너에 대한 라이브 복원의 영향 (Impact of live restore on running containers)
데몬이 오랫동안 다운되어 있으면 실행 중인 컨테이너가 데몬이 보통 읽는 FIFO 로그를 가득 채울 수 있어요. 가득 찬 로그는 컨테이너가 더 많은 데이터를 기록하는 것을 차단해요. 기본 버퍼 크기는 64K예요. 버퍼가 가득 차면 이를 비우기 위해 Docker 데몬을 재시작해야 해요.
Linux에서는 /proc/sys/fs/pipe-max-size를 변경해 커널의 버퍼 크기를 수정할 수 있어요. Docker Desktop for Mac 또는 Docker Desktop for Windows에서는 버퍼 크기를 수정할 수 없어요.
라이브 복원과 Swarm 모드 (Live restore and Swarm mode)
라이브 복원 옵션은 Swarm 서비스가 아니라 독립 실행형 컨테이너에만 해당돼요. Swarm 서비스는 Swarm 매니저가 관리해요. Swarm 매니저를 사용할 수 없으면 Swarm 서비스는 워커 노드에서 계속 실행되지만, 쿼럼을 유지할 만큼 충분한 Swarm 매니저가 사용 가능해질 때까지 관리할 수 없어요.