어머, LLM에 여러분의 도커파일을 생성해 달라고 요청했는데, 이제 Node에 대한 오류를 보고 있습니다. 알고 보니 제공된 기본 이미지에 알려진 취약점이 있는 Node 버전이 포함되어 있었습니다. 시간을 절약하려고 했을 때 염두에 두었던 것과는 전혀 다른 결과입니다.
하지만 걱정하지 마세요. 이는 Docker파일과 같은 상용구 코드에 AI 도구를 사용할 때 흔히 발생하는 문제입니다. 좋은 소식은? 이 문제는 쉽게 해결할 수 있으며, 취약한 노드 버전을 안전한 최신 버전으로 교체하는 방법을 정확히 안내해드리겠습니다. 지금 바로 시작해 보겠습니다.
뭐야, 타네이션!!!
도커파일처럼 간단한 작업에는 AI와 LLM을 사용하는 것이 가장 좋은 방법이라고 생각했습니다. 요즘은 모든 것이 AI이고 AI는 이런 일을 정말 잘해야 하는데...
제 생각이 바로 그겁니다. AI가 어디에나 있고 기업들이 'AI 유니콘'만을 채용하는 것처럼 보이기 때문에 앞다투어 뛰어들었다가 역습을 당하기 쉽습니다. 저 역시 반짝반짝 빛나는 AI가 생성한 Docker파일에 오류가 발생하기 시작했을 때 확실히 그랬죠.
다행히도 이 문제는 약간의 인간적인 손길만 더하면 사람의 손길로 해결할 수 있습니다.
네가 태어난 날을 저주한다, LLM!
이제 막 Docker 세계에 발을 들여놓은 초보 개발자가 컨테이너에 첫 번째 앱을 배포하려고 한다고 가정해 봅시다. 당연히 Copilot, Claude 또는 다른 LLM을 사용하여 Docker파일을 작성할 수 있습니다.
솔직히 말씀드리자면, 저처럼 DevOps에 거의 발을 들여놓지 않은 프론트엔드 개발자라면 도커파일에 실제로 무엇이 들어가야 하는지 전혀 모를 수도 있습니다. 도커파일에는 구성할 수 있는 구성할 수 있습니다. 바로 이 부분에서 LLM이 도움을 줄 수 있습니다... 또는 그렇게 생각하실 수도 있습니다.
죄송합니다... 이 도커파일에 노드 취약점이 내장되어 있습니다.
그래서 이런 일이 벌어졌습니다: 저는 Claude에게 도커파일 을 작성하는 데 도움을 요청했습니다. 아직 완전히 빌드되지는 않았지만, 실제로 해낼 수 있는지 확인하기 위해 컨테이너화를 시도해보는 것이 좋겠다고 생각했습니다.
제 컴퓨터에는 이미 Docker가 설치되어 있었기 때문에 그 부분은 문제가 없었습니다. 다음 단계는 실제로 어떻게 도커파일... 그리고 자연스럽게 AI에 도움을 요청했습니다.
클로드가 생성했을 때 도커파일 을 생성했을 때, 저는 바로 무언가를 알아챘습니다. 파일이 제안한 기본 이미지는 노드 18이었습니다. 솔직히 이 대화에서 나머지 부분은 중요하지 않습니다:
# 사용 공식 공식 Node.js 런타임 를 의 base 이미지 FROM 노드:18-alpine AS builder
그런데 놀랍게도 Visual Studio Code에서 파일을 여는 순간 오류가 발생했습니다. 알고 보니 해당 이미지의 노드 버전인 노드 18에는 알려진 보안 취약점이 있었습니다. 좋지 않죠.
VS Code는 친절하게도 경고를 표시하고 문제에 대한 자세한 내용을 읽을 수 있는 Docker Hub로 안내해 주었습니다. "이봐요, 친구... 이 오래된 노드 버전에는 취약점이 내장되어 있으니 사용하지 마세요."라고 말해주는 것이나 마찬가지였습니다. 이런.
Docker Hub의 보안 취약점에 대해 자세히 알아보세요.
이것은 매우 중요한 문제입니다. 학습이나 테스트를 위한 것이라도 무언가를 구축하는 경우 안전하지 않은 기반에서 실행되는 것을 출시하고 싶지 않을 것입니다. 기본 이미지의 취약점은 향후 모든 종류의 골칫거리의 문을 조용히 열어줄 수 있는 교활한 것 중 하나입니다.
다행히도 해결 방법은 매우 간단합니다.
내가 고친 방법(그리고 여러분도 할 수 있는 방법)
그렇다면 이 문제를 어떻게 해결할 수 있을까요? 솔직히 VS Code의 오류는 거의 모든 해답을 은쟁반에 담아 제공합니다. 클릭하시면 빠른 수정 를 클릭하거나 코파일럿에게 설명을 요청하면 다음과 같은 답변이 돌아옵니다:
"... 기본 이미지의 높은 취약성을 해결하려면 Node.js 이미지를 보다 안전한 버전으로 업데이트하세요."
번역? 과거에 얽매이지 마세요. 최신 노드 버전으로 업데이트하세요.
그래서 제가 한 일이 바로 그겁니다. 노드 18을 현재 가장 안정적인 최신 버전인 노드 22로 교체했습니다. 이제 업데이트된 라인은 다음과 같습니다:
FROM 노드:22-alpine31 AS base
그리고 마법처럼 더 이상 오류가 발생하지 않았습니다. 모든 것이 깔끔하게 빌드되었고 취약성 경고가 사라졌으며 컨테이너가 문제없이 실행되었습니다. Docker Desktop에서 컨테이너를 실행한 후, 컨테이너의 localhost로 이동했더니 정상적으로 실행되고 있었습니다.
이 모든 과정은 AI 도구가 더 빠르게 움직일 수 있도록 도와주는 멋진 도구이긴 하지만, 완벽하지는 않다는 사실을 일깨워주는 좋은 경험이었습니다. 여전히 필요하죠 ✨ 사람의 손길 을 통해 이러한 종류의 문제를 파악하고 구축 중인 콘텐츠가 안전하고 프로덕션에 바로 사용할 수 있는지 확인해야 합니다.
이제 기본 이미지를 업데이트하여 컨테이너를 행복하고 건강하게 유지하세요!



