[241127 TIL]

프로젝트 관리 심화

  • Docker
  • Docker-compose
  • CI/CD 파이프라인 구축
  • AWS Elastic Container Service 사용

Docker

  • 애플리케이션을 쉽게 만들고, 테스트하고, 배포할 수 있게 도와주는 소프트웨어 플랫폼
  • 애플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 실행 가능
  • Docker 이미지는 애플리케이션을 실행하는 데 필요한 모든 것(코드, 런타임, 시스템 도구, 시스템 라이브러리 등) 포함
  • 이미지 (Image)
    • 애플리케이션과 그 실행에 필요한 모든 것을 포함하는 읽기 전용 템플릿
    • 코드, 런타임, 라이브러리, 환경 변수, 구성 파일 등 포함
    • 이미지는 컨테이너를 생성하기 위한 청사진 역할을 합니다.
  • 컨테이너 (Container)
    • 컨테이너는 Docker 이미지를 실행한 상태입니다. 이미지가 정적인 템플릿이라면, 컨테이너는 실제로 애플리케이션이 실행되는 동적인 환경입니다.
    • 컨테이너는 격리된 공간에서 애플리케이션을 실행하며, 필요한 모든 의존성을 포함합니다.
    • 하나의 시스템에서 여러 개의 컨테이너를 독립적으로 실행할 수 있습니다.
  • Dockerfile
    • Dockerfile은 Docker 이미지를 생성하기 위한 스크립트입니다. 이 파일에는 이미지를 빌드하는 데 필요한 명령어들이 포함되어 있습니다.
    • Dockerfile을 사용하면 이미지 생성 과정을 자동화하고 일관되게 만들 수 있습니다.
  • Docker Hub
    • Docker Hub는 Docker 이미지를 공유하고 저장하는 중앙 저장소입니다. 사용자는 Docker Hub에서 다양한 공개 이미지를 다운로드하거나 자신만의 이미지를 업로드할 수 있습니다.
  • 볼륨 (Volume)
    • 볼륨은 컨테이너의 데이터를 지속적으로 저장할 수 있는 메커니즘입니다. 컨테이너가 삭제되더라도 볼륨에 저장된 데이터는 유지됩니다.
    • 볼륨을 사용하면 데이터를 컨테이너와 독립적으로 관리할 수 있습니다.
  • 네트워크 (Network)
    • Docker 네트워크는 컨테이너 간의 통신을 관리하는 방식입니다. Docker는 여러 가지 네트워크 드라이버를 제공하여 다양한 네트워크 설정을 지원합니다.
    • 기본적으로 모든 컨테이너는 브리지 네트워크를 통해 통신할 수 있습니다.
    • 네트워크 종류
      • Bridge Network (브리지 네트워크)
        • 기본적으로 Docker가 컨테이너를 실행할 때 사용하는 네트워크입니다.
        • 동일한 브리지 네트워크에 연결된 컨테이너들은 서로 통신할 수 있습니다.
        • 외부 네트워크와는 NAT (내부 네트워크의 여러 장치가 하나의 공용 IP 주소를 통해 외부 네트워크와 통신할 수 있도록 IP 주소를 변환하는 기술) 를 통해 통신합니다.
        • 일반적으로 단일 호스트에서 여러 컨테이너를 연결할 때 사용됩니다.
        • 명시하지 않으면 모두 브리지 네트워크에서 실행됩니다.
        docker network create my-bridge-network
        docker run -d --name container1 --network my-bridge-network nginx
        docker run -d --name container2 --network my-bridge-network nginx
        

+ Recent posts