Docker 내용 정리
도커 컨테이너 설계
도커 컨테이너 생성 시 주의해야 할 점 네 가지
- 1 컨테이너당 1 프로세스
- 변경 불가능한 인프라(Immutable Infrastructure) 이미지로 생성
- 경량의 도커 이미지로 생성
- 실행 계정은 root 이외의 사용자로 설정
1. 1 컨테이너당 1 프로세스
- 기존 VM처럼 하나의 이미지 안에 여러 프로세스는 비추
- 여러 프로세스 기동 시 주변 에코 시스템과 맞지 않거나 관리가 힘들어짐
2. 변경 불가능한 인프라를 구현하는 이미지로 생성
- 변경 불가능한 인프라: “환경 변경 시 오래된 환경은 없애고 새로운 환경 생성” 또는 “한번 만든 환경은 절대 불변하게”
- 전자의 경우 쿠버네티스는 자동으로 만들어주지만 후자는 컨테이너 이미지 관리자가 고려해야 함
- 도커 컨테이너는 버전 관리 가능하므로, 컨테이너 이미지 내에 애플리케이션 실행 바이너리 또는 관련 리소스를 가능한 포함시켜야 함
3. 도커 이미지 경량화
- 컨테이너 실행 시 최초 1회는 이미지를 외부에서 pull해야 함
dnf
,yum
,apt
로 패키지 설치 후 저장소 패키지 목록 등의 캐시파일 삭제- 멀티 스테이지 빌드 활용하여 이미지에 필요한 파일만 추가
- 기본 이미지가 경량인 배포판 이미지 사용 (ex. alpine linux, distorless 등)
- 도커 파일 최적화에 따라 레이어 줄이기
- 도커 이미지 생성시 squash 사용
4. 실행 계정 권한 최소화
- root 사용자는 최대한 사용하지 않도록 한다.
ENTRYPOINT
와 CMD
- 컨테이너가 기동할 때 실행하는 명령어를 지정할 때 사용
- 아주 간단히 설명하면
$ENTRYOINT $CMD
가 실행된다고 볼 수 있음 ENTRYPOINT
에 바꿀 필요가 없는 부분을 정의하고CMD
에 기본값 인수 등을 정의하는 것이 일반적- 예)
ENTRYPOINT
에 /bin/sleep 지정,CMD
에 sleep 시간 지정
- 예)