inblog logo
|
sxias
    Docker

    [Docker] 3. Docker

    문정준's avatar
    문정준
    Jul 29, 2025
    [Docker] 3. Docker
    Contents
    종속된 애플리케이션의 문제VM의 한계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
    Contents
    종속된 애플리케이션의 문제VM의 한계Docker

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog