[Docker] 3. Docker

문정준's avatar
Jul 29, 2025
[Docker] 3. Docker

종속된 애플리케이션의 문제

  • 앱을 개발하고 나면 해당 커널에 종속되는 여부가 매우 중요함
    • Java, Python 같은 언어들은 OS에 종속되지 않도록 가상 머신 (VM)을 지원
    • VM은 커널의 종류에 따라 다르게 System Call을 전송
      • 이때, 앱에서 바로 System Call이 필요할 경우가 문제 : 앱이 커널에 종속됨
    • C 언어, C++와 같은 VM이 없는 언어의 경우에도 앱이 커널에 종속됨
  • 배포 시에 커널의 종류가 달라지게 되면, 종속된 앱은 변경된 커널에 맞는 System Call을 내려줄 수 없음 : 에러 발생 → 실행이 불가함
notion image

VM의 한계

  • 그래서 앱을 배포할 때에 가상화 환경을 사용하게 되는데, 이때 VM (가상화 머신)을 사용함
    • 여기서 사용하는 VM은 JVM, PVM과 다르게 해당 개발 환경을 그대로 가상 환경에 적용함
  • 가상화 머신을 사용할 경우 해당 커널(OS)을 각각 구동시키면서 동작하기 때문에 여러 개의 커널을 동작시켜야 함 : 속도가 느려짐
notion image

Docker

  • Docker는 이런 다중 커널 실행 문제를 해결하기 위해 컨테이너 개념을 이용
    • 커널을 작동시키는 명령어와 앱만 담아서 Host OS에서 구동 : 작동되는 OS는 1개밖에 되지 않음
 
  • Docker 내부에는 Host OS, 이미지를 저장할 수 있는 HW, 컨테이너로 구성되어 있음
    • 이미지는 Docker 내부에서 사용하는 설치 파일의 일종으로, iso와 비슷
    • 이미지를 다운받으면 컨테이너 내부에 설치됨
 
  • Container 실행 순서
      1. Terminal에서 Docker 서버로 명령어 입력 (docker run)
      1. Docker 서버에서 명령어에 있는 이미지를 HW에서 찾음
      1. 새 컨테이너 생성 후 실행
      1. Host OS로 추가 명령어 입력 및 수행
notion image
 
Share article

sxias