[TIL] 20240613 - Docker

jini·2024년 6월 13일
0

TIL

목록 보기
28/48

자동 배포 파이프라인


코드의 통합, 테스트, 배포의 단계를 유지하며 자동화
코드 변경 → 지속적 통합 → 자동 인수 테스트 → 구성 관리

🧊 지속적 통합(CI; Continuous Integration)

코드가 올바르게 빌드 및 통합되는지를 자동으로 확인

  • 리포지토리에서 코드를 체크아웃

  • 빌드를 수행하고 단위테스트를 수행

  • 코드 품질을 검증

🧊 인수 테스트(UAT; User Acceptance Test)

제품이 릴리스할 준비가 되었는지를 확인

통합 테스트, 인수 테스트, 비기능적 분석(성능, 확장성, 보안) 등을 포함

🧊 구성 관리(Configuration Management)

소프트웨어와 환경 변화를 추적하고 제어

필수 도구 준비와 설치

응용의 배포와 관련한 다양한 서비스 인스턴스와 배포 버전 관리



파이프라인 자동화 도구


  • 컨테이너 가상화 및 클러스터 운용

    • Docker + Kubernetes
  • 소프트웨어 개발 파이프라인 자동화 서버

    • Jenkins
  • 구성 관리 자동화

    • Ansible
  • 소프트웨어 버전 관리(SCM; Source Code Management)

    • GitHub
  • 그 외

    • 빌드 도구 (자동화 지원), 단위 테스트 프레임워크, 정적 코드 분석기, 인수 테스트 프레임워크



가상화(Virtualization)


물리적인 컴퓨팅 자원의 특징을 다른 시스템 응용 프로그램, 최종 사용자들이 사원과 상호작용하는 방식으로부터 감추는 기술

🧊 서버 가상화 기술

🌀 가상기계(VM; Virtual Machine) 기반

  • 하이퍼바이저(hypervisor)를 이용

  • Type1: 네이티브(native) 또는 베어메탈(bare-metal)형

    • 전가상화 (full virtualization)
    • 반가상화 (para virtualiation)
  • Type2: 호스트형(hosted)

🌀 컨테이너 기반(Container) 기반

호스트 OS의 컨테이너 기술을 이용



Docker


Linux, Windows, MacOS 상에서 실행되는 컨테이너 엔진을 제공

AWS, GCP, Azure 등의 클라우드 컴퓨팅 인프라와 결합하면 더욱 유연한 운영이 가능

🧊 Docker 구성요소

🌀 도커 이미지(Docker images)

응용을 실행하는 데 필요한 모든 파일들과 그것을 실행하는 방법을 한데 묶어 놓은 것

상태를 저장하지 않는(stateless) 방식 - 네트워크로 전송, 레지스트리에 저장, 이름 및 버전 지정 가능

계층화되어 있다는 특징을 가지고 있으며, 어떤 이미지로부터 다른 이미지를 만드는 것이 가능

🌀 도커 컨테이너 (Docker containers)

이미지의 실행 인스턴스(instance)

하나의 이미지로부터 여러 컨테이너(인스턴스)를 만들어 동일한 응용을 여러 개 실행할 수 있음(각각은 독립)

상태를 저장하는 (stateful) 방식 - 컨테이너를 사용하면서 상태를 변경할 수 있음

🧊 Docker 명령어

docker run <이미지 이름> : 이름이 주어진 이미지를 로컬에서 또는 레지스트리에서 가져다가 컨테이너를 만들어 실행

docker ps : 현재 실행중인 컨테이너들의 정보를 조회

docker ps -a : 현재 실행중이거나 중단되어 있는 컨테이너들의 정보를 조회

docker images : 로컬 컴퓨터에 가지고 있는 이미지들의 정보를 조회

docker stop <컨테이너 이름/ID> : 현재 실행중인 컨테이너의 실행을 중단(컨테이너가 없어지지는 않음)

docker rm <컨테이너 이름/ID> : 컨테이너 삭제

docker rmi <이미지 이름/ID> : 도커 이미지 삭제

0개의 댓글