Docker 내용 정리

많이 쓰는 도커 내용 정리

Docker 내용 정리

도커 컨테이너 설계

도커 컨테이너 생성 시 주의해야 할 점 네 가지

  1. 1 컨테이너당 1 프로세스
  2. 변경 불가능한 인프라(Immutable Infrastructure) 이미지로 생성
  3. 경량의 도커 이미지로 생성
  4. 실행 계정은 root 이외의 사용자로 설정

1. 1 컨테이너당 1 프로세스

  • 기존 VM처럼 하나의 이미지 안에 여러 프로세스는 비추
  • 여러 프로세스 기동 시 주변 에코 시스템과 맞지 않거나 관리가 힘들어짐

2. 변경 불가능한 인프라를 구현하는 이미지로 생성

  • 변경 불가능한 인프라: “환경 변경 시 오래된 환경은 없애고 새로운 환경 생성” 또는 “한번 만든 환경은 절대 불변하게”
  • 전자의 경우 쿠버네티스는 자동으로 만들어주지만 후자는 컨테이너 이미지 관리자가 고려해야 함
  • 도커 컨테이너는 버전 관리 가능하므로, 컨테이너 이미지 내에 애플리케이션 실행 바이너리 또는 관련 리소스를 가능한 포함시켜야 함

3. 도커 이미지 경량화

  • 컨테이너 실행 시 최초 1회는 이미지를 외부에서 pull해야 함
  • dnf, yum, apt로 패키지 설치 후 저장소 패키지 목록 등의 캐시파일 삭제
  • 멀티 스테이지 빌드 활용하여 이미지에 필요한 파일만 추가
  • 기본 이미지가 경량인 배포판 이미지 사용 (ex. alpine linux, distorless 등)
  • 도커 파일 최적화에 따라 레이어 줄이기
  • 도커 이미지 생성시 squash 사용

4. 실행 계정 권한 최소화

  • root 사용자는 최대한 사용하지 않도록 한다.

ENTRYPOINTCMD

  • 컨테이너가 기동할 때 실행하는 명령어를 지정할 때 사용
  • 아주 간단히 설명하면 $ENTRYOINT $CMD가 실행된다고 볼 수 있음
  • ENTRYPOINT에 바꿀 필요가 없는 부분을 정의하고 CMD에 기본값 인수 등을 정의하는 것이 일반적
    • 예) ENTRYPOINT에 /bin/sleep 지정, CMD에 sleep 시간 지정
Licensed under CC BY-NC-SA 4.0
Hugo로 만듦
JimmyStack 테마 사용 중