Skip to content

Latest commit

 

History

History
85 lines (61 loc) · 3.74 KB

2024-12-09.md

File metadata and controls

85 lines (61 loc) · 3.74 KB

🗓️ 2024-12-09

🐌 스크럼

  • 학습 목표 1. Docker

💡 새로 배운 내용

1. 도커

컨테이너 단위로 실행할 수 있는 배포 플랫폼 → 개발, 배포, 실행하는 과정을 단순화

  • 사용하는 이유

    • 일관성: 다른 실행 환경 (로컬, 서버, 테스트 환경)에서도 정상적으로 동작
    • 이식성: 다른 실행 환경 (windows, MacOS)에서도 정상적으로 동작
    • 확장성: 서비스를 확장하기 쉬움
    • 효율성: 자원을 효율적으로 사용 가능 (cpu 개수, ram 사이즈 등을 설정할 수 있기 때문)

  • 기본 요소
    • 도커파일: 프로젝트를 이미지로 만들기 위한 설정 파일
    • 이미지: 컨테이너를 생성하는 정적 템플릿, 애플리케이션에 필요한 데이터가 있음
      • build : 이미지를 빌드
      • run: 이미지로 컨테이너 생성 및 실행
      • push: 이미지를 레지스트리로 업로드
    • 컨테이너: 애플리케이션이 실행되는 환경
    • 레지스트리: 이미지를 저장하고 배포하는 중앙 저장소

  • 의존성을 뿌신 도커
    • 하드웨어 의존성: cpu, ram 등 하드웨어 종류에 따라 애플리케이션 개발에 영향을 받는 특성
    • 운영체제 의존성: os 종류에 따라 애플리케이션 개발에 영향을 받는 특성 👉🏻 도커는 컨테이너 기반이기 때문에, os, 환경에 영향을 받지 않고 무조건 빌드하고 실행하는 것을 보장한다.

  • 도커 파일
    도커가 이미지를 만들 때 기반이 되는 파일
    • FROM: 베이스 이미지를 지정
    • RUN: 도커 이미지를 빌드하는 시점에서 명령어 실행
    • CMD: 컨테이너 실행 초기에 실행할 명령어 지정 (컨테이너 run 명령이 치면서 덮어쓸 수 있음)
    • ENTRYPOINT: 컨테이너 실행 초기에 꼭! 실행되어야 하는 명령어 지정
    • COPY: 이미지로 특정 폴더나 파일을 복사
    • WORKDIR: 컨테이너에서 작업할 디렉토리 지정

  • 도커 run 옵션
    • -t: tty(가상 터미널)을 할당해주지만, 바로 입력이 차단되기 때문에 보통은 -i와 함께 사용
    • -i: 명령어를 입력받을 수 있게 세션을 염
    • -it: 컨테이너 내부와 상호작용이 가능한 터미널 세션을 염
    • -rm: 컨테이너 종료시 자동으로 컨테이너를 삭제
    • -d: 컨테이너를 백그라운드에서 실행
    • -p: 포트 매핑 (로컬 포트:컨테이너 포트)
    • -e: 환경변수 설정
    • --name: 컨테이너 이름 설정

  • exec 명령어
    이미 실행 중인 컨테이너에 추가 명령을 실행

  • Multi Stage Build
    • dockerfile에서 하나의 이미지를 빌드할 때 의존성과 배포 파일을 분리해서 단계별로 빌드하는 방법

👏🏻 오늘의 회고

  • 도커 멀티 스테이지 빌드는 처음 써봤는데 이미지 용량 차이와 빌드 시간이 차이가 많이 났다. 의존성 파일이 많은 프로젝트에는 멀티 스테이지 빌드 방식을 사용해야겠다. MSB

🔗 참고 자료 및 링크