본문 바로가기
Docker

Node.js Docker image

by 신림쥐 2025. 4. 11.
728x90

 

     


    Docker Official Image?

    Docker 공식 이미지는 Docker 오픈 소스 및 즉석 솔루션 저장소의 큐레이션된 세트입니다. 공식 이미지는 명확한 설명서를 포함하고 있으며, 모범 사례를 홍보하고 있으며, 가장 일반적인 사용 사례에 맞춰 설계되었습니다.

    Node.js란 무엇인가요?

    Node.js는 확장 가능한 서버 측 및 네트워킹 애플리케이션을 위한 소프트웨어 플랫폼입니다. Node.js 애플리케이션은 JavaScript로 작성되었으며, Mac OS X, Windows 및 Linux에서 Node.js 런타임 내에서 변경 없이 실행할 수 있습니다.

    Node.js 애플리케이션은 논블로킹 I/O와 비동기 이벤트를 사용하여 처리량과 효율성을 극대화하도록 설계되었습니다. Node.js 애플리케이션은 단일 스레드로 실행되지만, Node.js는 파일 및 네트워크 이벤트에 다중 스레드를 사용합니다. Node.js는 비동기적 특성으로 인해 실시간 애플리케이션에 널리 사용됩니다.

    Node.js는 내부적으로 Google V8 JavaScript 엔진을 사용하여 코드를 실행합니다. 기본 모듈의 상당 부분이 JavaScript로 작성되었습니다. Node.js는 파일, 소켓, HTTP 통신을 위한 비동기 I/O 라이브러리를 내장하고 있습니다. HTTP 및 소켓 지원 덕분에 Node.js는 Apache와 같은 추가 소프트웨어 없이도 웹 서버 역할을 할 수 있습니다.

    Base Image

    Dockerfile에서 FROM 뒤에 오는 이미지가 바로 ase Image(기반 이미지)입니다. 이는 해당 이미지를 기반으로 새로운 이미지를 만들겠다는 의미입니다.

    FROM node:18
    
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    CMD ["node", "index.js"]

    위 예시에서 node:18이 Base Image이며, Node.js 18 버전을 기반으로 이미지를 생성하게 됩니다.

    Node.js Base Images

    Node.js Base Image(이하, 노드이미지)는 Node.js 환경이 사전에 설치되어 있는 도커 이미지입니다. 해당 이미지를 사용하면 Node.js 환경을 손쉽게 구축할 수 있습니다.

    노드 이미지의 다양한 변형 버전들

    노드이미지 는 다양한 형태로 제공되며, 각각 특정한 사용 사례에 맞게 디자인되었습니다.

    node:<version>

    Node.js LTS 버전 (기본 OS는 Debian)입니다. 이것이 Defacto 이미지입니다. 당신이 당신의 요구가 무엇인지 확실하지 않다면 아마도 이것을 사용하고 싶을 것입니다. 이 제품은 Throw Away 컨테이너 (소스 코드를 장착하고 컨테이너를 시작하여 앱을 시작)로 사용하도록 설계되었으며 다른 이미지를 만들기위한베이스.

    이 태그 중 일부에는 책벌레 나 불스 아이와 같은 이름이있을 수 있습니다. 이것들은 Debian⁠의 릴리스를위한 스위트 코드 이름이며 이미지가 기반으로 어떤 릴리스인지를 나타냅니다. 이미지가 이미지와 함께 제공되는 것 외에 추가 패키지를 설치 해야하는 경우, 새로운 데비안 릴리스가있을 때 파손을 최소화하기 위해 이러한 중 하나를 명시 적으로 지정할 수 있습니다.

    이 태그는 BuildPack-Deps를 기반으로합니다. BuildPack-Deps는 시스템에 많은 이미지를 가진 Docker의 일반 사용자를 위해 설계되었습니다. 디자인에 의해, 매우 일반적인 데비안 패키지가 많이 있습니다. 이로 인해 이미지가 설치 해야하는 패키지 수가 줄어들어 시스템의 모든 이미지의 전체 크기가 줄어 듭니다.

    node:<version>-alpine

    더 가볍고 작은 Alpine 기반 이미지 (속도/용량 효율적)입니다. 이 이미지는 알파인 공식 이미지에서 사용 가능한 인기있는 알파인 리눅스 프로젝트를 기반으로합니다. 알파인 리눅스는 대부분의 분포베이스 이미지 (~ 5MB)보다 훨씬 작으므로 일반적으로 더 얇은 이미지로 이어집니다.

    이 변형은 최종 이미지 크기가 가능한 한 작을 때 유용합니다. 주목해야 할 주요 경고는 Glibc 및 Friends ⁠ 대신 무슬림 libc⁠을 사용한다는 것입니다. 따라서 소프트웨어는 종종 LIBC 요구 사항/가정의 깊이에 따라 문제가 발생합니다. 발생할 수있는 문제와 알파인 기반 이미지 사용에 대한 프로/사기 비교에 대한 자세한 내용은이 해커 뉴스 코멘트 스레드를 참조하십시오.

    이미지 크기를 최소화하기 위해 추가 관련 도구 (예 : GIT 또는 BASH)가 알파인 기반 이미지에 포함되는 것은 드문 일입니다. 이 이미지를 기본으로 사용하여 자신의 dockerfile에 필요한 것들을 추가하십시오 (익숙하지 않은 경우 패키지를 설치하는 방법의 예는 Alpine 이미지 설명을 참조하십시오).

    node:<version>-slim

    최소화된 Debian 기반 이미지입니다. 이 이미지에는 기본 태그에 포함 된 공통 패키지가 포함되어 있지 않으며 노드를 실행하는 데 필요한 최소 패키지만 포함되어 있습니다.
    노드 이미지만 배포되고 공간 제약 조건이있는 환경에서 작업하지 않는 한이 저장소의 기본 이미지를 사용하는 것이 좋습니다.

    728x90