tech.junha.kr

노트/Docker

Overview

작성

1. 구성 요소

이미지

  • 스냅샷, 컨테이너를 생성하기 위한 읽기 전용 템플릿, 이미지는 불변입니다.
  • 이미지에는 애플리케이션과 해당 애플리케이션이 실행되기 위해 필요한 모든 종속성이 포함되어 있습니다.
  • 레이어
    • 이미지는 여러 레이어로 구성됩니다.
    • 이미지가 빌드되는 과정에서 단계별로 추가됩니다.
    • 각 레이어는 변경사항만을 포함하며, 레이어는 캐시되어서 이미지 빌드 시간을 단축시킵니다.
    • 예를 들어, 베이스 이미지 위에 새로운 애플리케이션 파일을 추가하는 방식입니다.
    • 도커 레이어 시스템
      • 빈번히 바뀌는거 마지막에
        • 소스코드나 설정파일처럼 자주 바뀌는건 Dockerfile 마지막에 두기
        • 이렇게 하면 캐시 효율이 좋아짐
      • 이미지 파일 만들때마다 캐시함
        • 동일한 명령어는 이전에 만든 레이어 재사용
        • 빌드 시간 단축 가능
      • 변경된 레이어부터 그 위에있는 레이어부터 업데이트
        • 특정 레이어가 변경되면 그 위의 모든 레이어도 다시 빌드됨
        • 아래 레이어들은 캐시 그대로 사용
      • 명령어마다 레이어를 가짐
        • RUN, COPY, ADD 같은 명령어마다 새 레이어 생성
        • &&로 명령어 연결하면 레이어 수를 줄일 수 있음

컨테이너

  • 스냅샷을 구동시키는 환경
  • 컨테이너는 이미지를 실행한 상태입니다.
  • 컨테이너는 독립된 실행 환경을 제공하며, 각각의 컨테이너는 이미지로부터 생성됩니다.
  • 읽기-쓰기 레이어가 추가되어 데이터를 저장하거나 변경할 수 있습니다.
  • 컨테이너는 격리되어 있으며, 필요한 리소스만 사용합니다.

이미지 vs 컨테이너

  • 이미지: 애플리케이션이 실행되기 위해 필요한 모든 설정과 파일을 담고 있습니다.
  • 컨테이너: 이미지를 기반으로 생성된 실행 환경으로, 이미지를 실제로 작동시키는 인스턴스라고 할 수 있습니다.

참고

커리큘럼

  1. 웹 개발에서 배포 및 Docker의 위치
    • 대표적인 배포 전략
      • 롤링 배포, 블루 그린 배포, 카나리 배포
    • 모던 웹개발에서 Docker가 왜 필요해졌을까?
    • 배포할 때 신경써야하는 요소
  2. 여러 Docker container 를 사용할 때 필요한 Docker compose, CI/CD 를 통한 배포 자동화
    • 모던 웹 환경에서 CI/CD 가 왜 중요한지와 구성요소에 대해 알아봅니다.
    • 여러 Docker container 를 사용하기 위해 자주 쓰이는 Docker Compose에 대해 알아봅니다.
    • 초간단 Docker 와 Github Action 함께 사용해 봅니다.
  3. Docker를 관리하는 Kubernetes
    • Kubernetes 구성요소
    • Kubernetes 를 서버의 한계 관점
    • 쿠버네티스자격증 (CKAD)
  4. 모던 웹 환경에서 사용되는 클라우드를 이해하고 구성하는 요소인 network, security, 기본 시스템 아키텍쳐 이해하기
    • 로드밸런싱, AWS RDS, VPC
    • 클라우드 환경에서 서버 운영 및 배포의 주요 단계
    • 클라우드를 사용할 때 꼭 알아야 하는
      • 보안 기초 개념
      • 네트워크 기초 개념
    • 웹 백엔드 개발 시 적용할 클라우드 아텍처
    • scaling을 고려한 아키텍처 설계