공간이 부족할 때 업그레이드: 앱 중지, 정리, 앱 재빌드 순서?

여러분, 안녕하세요. 바보 같은 질문일 수도 있지만, 그래도 물어보겠습니다.

저는 이런 익숙한 루프에 갇혀 있었습니다:

  1. 업그레이드 실패.
  2. ./launcher rebuild app을 시도하지만 디스크 공간이 부족합니다. (공백 공간이 5GB 미만.)
  3. ./launcher cleanup을 실행하니 디스크 공간이 조금은 확보되는 것 같았습니다. (공백 공간이 5GB 초과.)
  4. 2단계로 돌아가기.

어떤 작업이 안전(사이트 데이터를 파괴하지 않는다는 의미)한지 아직 정확히 알지 못했기 때문에, 백업에서 복구해야 하는 상황이 오지 않기를 바라며 불안하게 여기저기 시도해 보았습니다. 결국 아래 작업을 수행했는데 제 경우에는 잘 작동했습니다.

  1. ./launcher stop app
  2. ./launcher cleanup을 실행했는데, 이전보다 훨씬 더 많은 공간을 정리했습니다. 이 때문에 바로 불안해졌습니다.
  3. git pull
  4. ./launcher rebuild app

이 방법은 작동했을 뿐만 아니라, 데이터가 온전한 상태로 실행 중인 사이트가 되었고, 이전보다 약 2GB 더 많은 공백 공간이 확보되었습니다.

지금 제가 한 것이 영리한 방법이었는지, 당연한 절차였는지, 아니면 위험한 시도였지만 우연히 잘 된 것인지는 잘 모르겠습니다. 제가 왜 그런 결과를 얻었는지, 그리고 이것이 합리적인 업그레이드 방법이었는지 조금 더 이해하고 싶습니다.

많은 도움 부탁드립니다.

docker는 컨테이너를 빌드할 때 여러 파일을 생성합니다(빌드한 컨테이너 포함). 새로운 컨테이너를 빌드해도 이전 컨테이너(그리고 디스크 이미지)는 그대로 남아 있습니다. 클린업 시 삭제되는 것이 바로 이것입니다.

클린업 명령을 실행하는 것이 조금 더 안전한 이유는, 클린업 명령이 실행 중인 컨테이너를 삭제하지 않기 때문입니다. 재빌드 중 문제가 발생하더라도, 이전 컨테이너가 존재한다면 여전히 재시작할 수 있습니다.

따라서 위의 단계 (1)은 제거하고, 단계 (3)은 ./launcher가 이미 pull을 수행하므로 불필요합니다(과거에는 그렇지 않았습니다).

틀린 말일 수 있지만, 그렇게 하면 첫 번째 블록에서 작동하지 않던 동일한 두 단계(2-4)로 돌아가지 않나요?

부연하자면, 이것은 이 주제와 다소 유사해 보입니다:

아, 맞네. 그 부분을 다시 읽지 않았었어.

그래서, 디스크 공간이 너무 부족해서 이미지 두 개를 저장할 공간이 없다면, 새 이미지를 빌드하기 전에 기존 이미지들을 모두 삭제해야 해. 그렇게 하면 만약 어떤 이유로 새 이미지를 빌드할 수 없게 되면 큰 문제가 생기지. 그런 상황이라면 정말로 더 많은 디스크 공간이 필요해. 가장 쉬운 방법은 백업을 S3로 옮기는 거야.

제 상황에서 "디스크 공간이 빠듯하다"는 말에 놀랐습니다. 저는 클린업을 실행했고 7.9 GB의 여유 공간이 있는데, ./launcher rebuild app을 실행하면 완료되지 않습니다. 앱을 다시 빌드하려고 할 때 7.9 GB의 여유 공간이 정말로 그렇게 적은 건가요?!

(업데이트: 이제 이런 상황이 어떻게 발생하는지 이해했습니다. 웹 검색으로 이 내용을 찾는 무관한 독자들을 위해 여기에 남겨둡니다. 여러분, 이 스레드를 전부 읽어주세요!)

감사합니다! 정말로 이 문제가 맞습니다! 그리고 이건 핵심적인 포인트인 것 같습니다: "Less than 5GB of free space" — not true! 👀 - #3 by Simon_Manning

특히 이 부분입니다:

이번 재구성을 위해 새로운 기본 이미지를 다운로드해야 했습니다

업그레이드 과정에서 이 정보를 어떻게든 포함하는 것이 특히 도움이 될 것입니다. 예를 들어 "새로운 기본 이미지를 다운로드해야 하므로, 업그레이드를 위해 평소보다 약 3GB 더 많은 공간이 필요할 수 있습니다. 공간이 부족하다면 그것이 원인일 가능성이 높습니다."라는 사전 경고나, 업그레이드/재구성 과정에서 공간이 부족할 때 더 자세한 오류 메시지를 보여주는 방식 등이죠. 그렇지 않으면, “저기! (필요한 것 같은) 공간이 전부 여기 있습니다!” (팔을 뻗은 피카드.)라는 무한 루프에 빠지게 됩니다.

"나를 믿어라, 형. 디스크 공간은 충분해."라고 할 때 ./launcher rebuild app --skip-prereqs 옵션을 찾기 위해 그렇게까지 깊이 파고들어야 하지 않아도 되는 것이 특히 도움이 될 것입니다. 네, 경고는 굵은 글씨, 빨간색, 72포인트 폰트로 표시하세요.

이 "새로운 기본 이미지가 업그레이드를 엉성하게 만든다"는 현상은 잊을 만큼 드물게 발생하지만, 업그레이드 중에 문제를 일으킵니다. 이러한 문제를 우회하는 방법에 대해 우리가 아는 것을 집중적으로 정리한 기사가 적합한 곳은 어디일까요?

감사합니다.