Docker

[Docker] 기본 개념

HU_717 2024. 1. 2. 16:26

도커의 개념과 의의, 이미지, 컨테이너 등 도커를 처음 공부할 때 기본적인 내용을 정리하였습니다.

 

 

 

 

 

 

 

 

 

"도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문" 책을 참고하여 작성한 글입니다.


✏️  도커

- 컨테이너형 가상화 기술을 구현하기 위한 상주 애플리케이션과 이 애플리케이션을 조작하기 위한 명령행 도구로 구성되는 프로덕트

  • 운영체제 대부분을 호스트 운영체제와 공유함

   * 컨테이너형 가상화 기술 : 가상화 소프트웨어 없이도 운영체제의 리소스를 격리해 가상 운영체제(컨테이너) 생성 가능

- 편리한 환경 구축이 가능함
  • 구성파일과 명령어로 테스트용 가상환경 구축 가능
- 조작이 간편한 경량 컨테이너
  • 로컬머신의 개발환경 구축에 널리 사용됨
- 이식성이 뛰어나 개발 환경과 운영 환경에 동등하게 재현이 가능함
  • 서버끼리 컨테이너 이동 가능
  • 컨테이너 정보를 Dockerfile 코드(코드 기반으로 복제 및 배포)로 관리

 

✓ 도커 사용의 의의

  • 변하지 않는 실행환경으로 멱등성(연산을 여러번 적용하더라도 결과가 달라지지 않음) 확보
  • 코드를 통한 실행환경 구축 및 애플리케이션 구성
  • 실행환경과 애플리케이션의 일체화로 이식성 향상
  • 시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성
  • 웹 어플리케이션 프론트에 아파치나 엔진엑스 같은 웹 서버 없이 컨테이너 설정 가능

 

✏️ 도커 이미지

  • 도커 이미지 빌드(Dockerfile 이나 애플리케이션 실행 파일을 사용해서 도커 컨테이너의 원형이 될 이미지를 만드는 과정)
  • 도커 컨테이너를 구성하는 파일 시스템과 실행할 애플리케이션 설정을 하나로 합친 것
  • 컨테이너를 생성하는 템플릿 역할

 

✏️ 도커 컨테이너

  • 도커 이미지를 기반으로 생성되며, 파일 시스템과 애플리케이션이 구체화 돼 실행되는 상태

  • 운영체제(인프라)와 애플리케이션을 담은 상자
  • 작업 환경 차이를 줄여줌
  • 도커 이미지 형태 저장 후 재사용 가능함(도커 이미지 하나로 여러 개 컨테이너 생성 가능)

 

✏️ 도커 컴포즈

  • 컨테이너 의존 관계나 실행 순서를 위해 보완된 것
  • yaml 포맷으로 작성된 설정 파일로 컨테이너 정의나 컨테이너 의존 관계를 정의해 시작 순서 제어 가능
  • 도커와 도커 컴포즈를 통해 여러 애플리케이션과 미들웨어 의존 관계를 간결한 코드로 관리 가능

 

✏️ 도커 스웜

  • 도커 컴포즈가 단일 서버를 넘어 여러 서버에 걸쳐있는 여러 컨테이너를 관리할 수 있도록 한 도구
  • 컨테이너 증가 및 감소, 노드 리소스의 효율적 활용을 위한 컨테이너 배치 및 로드 밸런싱 기능 갖춤
  • 배포시 롤링업데이트(오래된 컨테이너와 새로운 컨테이너 단계적 서비스 교체 투입) 가능

 

✏️ 도커 Hub

  • Image Registry : Docker 이미지를 저장하는 원격 스토리지
  • 도커에서 운영되는 Docker 이미지 저장소 서비스
  • 공개된 이미지만 사용할 경우 도커Hub 가입 필요 없음

 


💡정리

Docker 구조 (출처: https://docs.docker.com/get-started/overview/)

  • Docker의 구성 : Client(docker), 서버(dockered)
  • Docker image : read only의 docker container을 생성하기 위한 template
  • Container : images가 실제 메모리에 로딩된 instance
  • Registry : Docker hub, images의 저장소