본문 바로가기

Server/Docker

[Docker] Docker로 배포하기: 1. 가상화, Docker란

 

 

도커.. 도커 환경에서... 도커 이미지...

 

이제 4학년인 IT대 학생으로서 수업에서도 꽤나 듣던 도커

항상 대충 알려주신 대로 얼렁뚱땅 써본 적은 있어도,

왜 쓰는지, 어떻게 쓰는지 공부해본 적은 없어서 쓸 때마다 새로운 느낌이었다... 하하;;

써본 적은 있어도, 막상 쓸 줄은 모르는 Docker😭

 

이런 애매한 상태에서 원티드에서 진행하는 4월 프리온보딩 백엔드 챌린지'도커로 배포 경험'이라는 것을 보았고, 도커를 외면하며 꼭두각시처럼 사용했던(?) 지난 과거를 청산하고자 신청하게 되었다. 이번 기회로 도커를 왜 쓰는지 명확하게 나만의 답을 말할 수 있으며, 실제 적절한 상황에서 사용할 수 있길 바라며 블로그에 정리해보겠다. 첫 글은 Docker란...

 


🧐 가상화 (Virtualization)

 

1) 가상화

  • 실체가 없는 것을 마치 존재하는 것처럼 보이게 하는 기술
  • 물리적 시스템에 대한 가상 표현을 생성하는 데 사용할 수 있는 기술

예를 들어, 1대의 물리 서버에 가상 서버 여러 대를 구축할 수 있다.

호스트 OS형 가상화

가상화를 사용하면 유연하게 환경을 구축할 수 있고, 가상 환경 별 백업이 가능하다.

가상화는 서버 가상화, 네트워크 가상화 등이 있습니다.

2) 서버 가상화

  • 물리 서버 하나에 가상 서버를 여러 대 구축하는 기술
  • 호스트 OS형 가상화, 하이퍼바이저형 가상화, 컨테이너형 가상화
호스트 OS형 물리 서버에 설치된 호스트 OS에서 가상 서버 가동
하이퍼바이저형 호스트 OS 없이 가상화 소프트웨어를 이용하여 가상 서버 가동
컨테이너형 OS 단위가 아닌 애플리케이션 단위의 가상화
가상 하드웨어와 게스트 OS가 없음
ex) Docker

 

3) 컨테이너형 가상화

  • 애플리케이션 단위로 가상화하는 기술
  • 애플리케이션을 실행하는 데 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리 등을 포함하는 가벼운, 격리된 환경을 생성하는 기술
  • 컨테이너: 운영 체제에서 실행되는 프로세스

컨테이너형 가상화

  • 컨테이너에는 여러 응용 프로그램을 도입할 수 있지만 하나의 컨테이너에 하나의 애플리케이션 단위로 구축하고, 여러 컨테이너를 결합하는 것이 좋다.
  • 리눅스의 핵심 기능인 Cgroups와 Namespace를 활용
    • Cgroups (Control Groups)
      • 프로세스 그룹의 리소스 사용량을 모니터링하고 제한하는 기능
      • 컨테이너가 할당된 자원을 초과하여 사용하는 것 방지
    • Namespace
      • 프로세스에게 제한된 시스템 뷰를 제공하여, 프로세스가 자신의 네임스페이스 내에서만 시스템 리소스를 볼 수 있도록 함
      • 파일 시스템 마운트, 네트워크, 사용자 ID, 호스트 이름 등을 각 컨테이너마다 독립적으로 할당하고 관리 -> 컨테이너를 격리된 환경으로 만들어주는 핵심 기술
  • 장점
    • 가상머신, 게스트 OS가 필요 X
    • 컨테이너와 데이터 분리, 데이터를 저장할 호스트 OS 디렉토리 지정 가능

🧐 도커 (Docker)

 

1) 도커

  • 컨테이너를 실행하거나 컨테이너 이미지를 만들고 배포하는 플랫폼
  • 응용프로그램을 실행 환경 단위로 패키지화해 컨테이너 이미지 생성

2) 도커 이미지, 도커 컨테이너, 도커파일, 도커 허브

  1. 도커 이미지 (Docker Image)
    • 컨테이너를 실행하기 위한 템플릿
    • 코드, 런타임, 애플리케이션 관련 라이브러리, 환경 변수 및 설정 파일 등 포함
  2. 도커 컨테이너 (Docker container)
    • 도커 이미지의 실행 인스턴스
    • 이미지 기반 실행, 격리된 환경에서 애플리케이션과 의존성 캡슐화
  3. 도커 파일 (DockerFile)
    • 도커 이미지를 자동으로 빌드하기 위한 스크립트 파일
    • 기본 이미지 설정, 실행할 명령어, 추가할 파일 및 디렉토리, 환경 변수 설정 등 이미지 생성에 필요한 지시어 담음
    • docker build 명령어로 새로운 도커 이미지 생성
  4. 도커 허브 (Docker Hub)
    • 도커 이미지를 찾고, 공유하고, 관리할 수 있는 공식적인 클라우드 기반 서비스 및 저장소

3) 도커 엔진

  • 컨테이너를 생성하고 관리하는 기능을 제공하는 클라이언트-서버 형태의 애플리케이션
  • 아래 세 가지로 구성
    1. 도커 클라이언트: REST API : 사용자 인터페이스
    2. 도커 데몬: 도커 객체 관리
    3. 컨테이너 레지스토리: CLI 클라이언트: 컨테이너 이미지 관리

 

 

다음 시간엔 도커를 써보자

[Docker] Docker로 배포하기: 2. 도커 컨테이너 생성, 도커 컴포즈 실행

 

[Docker] Docker로 배포하기: 2. 도커 컨테이너 생성, 도커 컴포즈 실행

지난 글에서 가상화와 도커에 대해 공부하면서, 도커가 무엇인지 어느 정도 파악했다. 이제 실제 사용까지 해보자! 🧐 Docker desktop 다운로드 도커 데스크탑은 컨테이너화된 애플리케이션 및 마

koakwak.tistory.com