> 운영 및 유지보수 > Docker > 다단계 빌드로 사용자 정의 Docker 이미지를 구현하는 방법은 무엇입니까?

다단계 빌드로 사용자 정의 Docker 이미지를 구현하는 방법은 무엇입니까?

James Robert Taylor
풀어 주다: 2025-03-11 16:46:17
원래의
399명이 탐색했습니다.

다단계 빌드를 사용하여 사용자 정의 Docker 이미지를 구현하는 방법?

다단계 Docker 빌드 구현

다중 단계 빌드는 Docker의 단일 dockerfile 내에서 여러 단계를 정의하는 능력을 활용합니다. 각 단계는 별도의 빌드 환경을 나타내므로 빌드 프로세스를 최종 런타임 환경과 분리 할 수 ​​있습니다. 이는 최종 이미지의 크기를 최소화하는 데 중요합니다.

간단한 node.js 응용 프로그램을위한 다단 단계 빌드를 보여주는 기본 예는 다음과 같습니다.

 <code class="dockerfile"># 단계 1 : Node에서 응용 프로그램 구축 : 16- Alpine As WorkDir/앱 복사 패키지*.JPM 설치 사본 ./ 실행 NPM 설치 카피 ./ . 실행 NPM RUN 빌드 # 스테이지 2 : nginx에서 런타임 이미지 생성 : Alpine Copy : from = builder/app/dist/share/share/html/html </code> 
로그인 후 복사

이 예에서

  • 1 ( builder ) : 이 단계를 구축합니다. 모든 빌드 종속성이 설치되고 응용 프로그램은이 단계에서 구축됩니다.
  • 2 단계 : 이 단계는 가벼운 Nginx 이미지를 사용합니다. 구축 된 응용 프로그램 아티팩트 ( builder stage의 /app/dist ) 만 최종 이미지로 복사됩니다. 이렇게하면 최종 이미지에서 모든 빌드 도구와 종속성을 제거하여 크기가 작습니다.

사본 -from = builder 명령어는 핵심입니다. 이전 단계에서 현재 단계로 아티팩트를 복사합니다. as & lt; stage_name & gt; . 보다 복잡한 응용 프로그램의 경우 빌드의 다른 부분을 분리하기 위해 더 많은 단계가 필요할 수 있습니다 (예 : C 코드를 한 단계에서 컴파일 한 다음 Node.js 응용 프로그램을 다른 단계에서 구축).

사용자 정의 도커 이미지에 다단계 빌드를 사용하면 다중 단계 빌드의 이점이 무엇입니까? 장점 :
  • 감소 된 이미지 크기 : 이것은 가장 설득력있는 이점입니다. 런타임 환경에서 빌드 도구 및 종속성을 분리하면 최종 이미지 크기를 크게 줄여서 더 빠른 다운로드, 스토리지 요구 사항 및 보안 개선이 향상됩니다.
  • 보안 개선 : 작은 이미지는 본질적으로 더 작은 공격 표면을 갖습니다. 불필요한 파일 및 도구를 제거하면 잠재적 인 취약점이 최소화됩니다.
  • 강화 된 빌드 재현성 : 다중 단계 빌드는 dockerfile 에서 더 나은 구성과 명확성을 촉진합니다. 각 단계는 구체적인 목적을 가지고있어 빌드 프로세스를 쉽게 이해하고 유지 관리하고 디버깅 할 수 있습니다.
  • 더 빠른 빌드 시간 : 여러 단계로 인해 초기 빌드가 약간 더 오래 걸릴 수 있지만, 후속 빌드는 종종 캐싱으로부터 혜택을 받기 때문에 전체적으로 더 빠른 빌드 시간으로 이어집니다. Docker는 이전 빌드에서 중간 계층을 캐시 할 수 있기 때문입니다.
  • 더 나은 구성 : 다단계 빌드의 구조화 된 접근 방식은 특히 복잡한 응용 분야를 위해 Dockerfiles의 구성과 유지 보수성을 향상시킵니다.

다중 단계 빌드를 사용하여 Docker 이미지 크기를 최적화 할 수 있습니까? 빌드

기본 다단계 접근 방식을 넘어서, 몇 가지 기술은 이미지 크기를 더 최적화 할 수 있습니다.

  • 최소 기본 이미지 선택 : 각 단계에서 가장 작은 기본 이미지를 사용하십시오. Alpine Linux 변형은 종종 작은 크기에 선호됩니다.
  • 사용 .dockerignore : .dockerignore 파일 생성 불필요한 파일과 디렉토리가 이미지에 복사되는 것을 제외합니다. 이것은 큰 파일과 디렉토리가 이미지 크기를 불필요하게 증가시키는 것을 방지합니다.
  • 중간 파일 정리 : 각 단계에서 rm -rf/var/lib/apt/lists/*와 같은 명령을 사용하십시오.
  • 의존성 최소화 : 응용 프로그램의 종속성을 신중하게 검토하고 사용하지 않은 패키지 또는 라이브러리를 제거하십시오.
  • 다른 빌드 단계에 대한 단계 : 각각의 특정 작업에 중점을 둔 논리적 단계로 나눕니다. 이는 종속성을 분리하고 최종 이미지에 필요한 파일 만 포함하는 데 도움이됩니다.
  • 여러 아키텍처에 다단계를 사용하십시오. 여러 아키텍처를 위해 구축하는 경우 다단계를 사용하여 응용 프로그램을 한 번 구축 한 다음 출력을 아키텍처 특정 런타임 이미지에 복사하십시오. 이것은 각 아키텍처에 대한 응용 프로그램을 재건하는 것을 피합니다.

여러 단계로 구축 된 사용자 정의 도커 이미지를 보호하기위한 모범 사례는 무엇입니까?

다중 단계 Docker Images 보안

다중 단계 도커 이미지를 고정하는 여러 가지 기준 이미지를 포함합니다. 가장 작고 가장 안전한 기본 이미지.

  • 정기적으로 의존성을 정기적으로 업데이트하십시오. 알려진 보안 결함을 완화하기 위해 모든 종속성을 최신 상태로 유지하십시오.
  • 취약점에 대한 이미지 스캔 : Clair 또는 Trivy와 같은 도구를 사용하여 정기적으로 스캔하여 잠재적 인 취약점을 식별합니다. 타협으로 인한 잠재적 손상을 제한하기 위해 컨테이너 내에서 뿌리가 아닌 사용자로 응용 프로그램을 실행하십시오.
  • 제한 권한 : 컨테이너 내의 응용 프로그램에 필요한 권한을 부여하십시오.
  • 빌드 프로세스 보안 : 빌드 환경이 안전하고 DockerFiles가 손상되지 않도록하십시오.
  • 가능하면 공식 이미지 사용 : 기본 이미지를 선택할 때 공식 이미지를 선택할 때 공식 이미지를 우선 순위를 지정할 때 공식 이미지를 우선시하고 정기적 인 AUDITS 및 SECOLIT AUDITS에서 공식 이미지를 선택할 때 공식 이미지를 사용하십시오. 잠재적 인 취약점을 식별하고 해결하기위한 프로세스.
  • 최소 특권 원칙 : 빌드 프로세스 및 런타임 환경에서 최소한의 권한 원칙을 적용하십시오. 필요한 구성 요소와 종속성 만 포함합니다.
  • 이러한 관행을 부지런히 따르면 다단계 Docker 이미지의 보안을 크게 향상시킬 수 있습니다. 보안은 지속적인 모니터링 및 업데이트가 필요한 지속적인 프로세스입니다.

    위 내용은 다단계 빌드로 사용자 정의 Docker 이미지를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    저자별 최신 기사
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿