docker-1. 도커란


도커 탄생 배경

로컬에서 개발한 소스 파일을 서버에 올릴때 의존성 문제와 같은 오류가 발생하는 경우가 꽤 많다. 이러한 Dependency 문제로 도커가 생겨났다.

가상 머신이란 ?
- 하나의 물리적인 컴퓨터 자원(CPU, 메모리, 저장장치 등)을 가상적으로 분할하여 여러개의 …

  • VM vs Container 스크린샷 2024-05-11 오전 10 12 14

    • 공통점
      • 환경격리: 두 기수 ㄹ모두 애플리케이션을 격리된 환경에서 실행하여 다른 시스템이나 애플리케이션과의 충돌 방지
      • 이식성: sw를 하나의 환경에서 다른 환경으로 쉽게 이전할 수 있게 함
      • 리소스 활용의 최적화: 기존의 물리적 하드웨어 자원을 보다 효율적으로 사용할 수 있도록 함
    • 차이점
      • 가상화 레벨 가상머신: hw레벨에서 가상화를 제공하며 각 가상 머신에는 고유 os가 있음 컨테이너: os레벨에서 가상화를 제공하고 호스트 os를 공유

      • 리소스 사용 가상머신: 완전히 독립된 환경을 제공하기 때문에 더 많은 리소스를 소비함 컨테이너: 가벼우며 필요한 리소스만 사용하여 훨씬 더 효율적임

      • 부팅시간 가상머신:
        컨테이너:

      • 관리 및 유지 보수 가상머신:
        컨테이너:


docker란

도커란 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술이다

  • 어플리케이션을 패키징 할 수 있는 툴
  • 컨테이너라고 불리는 하나의 작은 소프트웨어에 우리의 어플리케이션과 그에 필요한 시스템 툴, 환경설정, 모든 디펜던시를 하나에 묶어서 다른서버, 다른피씨 그 어떤곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴이다.

  • Docker Architecture 스크린샷 2024-05-11 오전 10 16 27


컨테이너(Container)란

컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다 (가상화 기술 중 하나)

가상화 기술이란 무엇인가
- 하드웨어 리소스(프로세서, 메모리, 저장소)를 추상화 하는것
- ex) 메모리 가상화, 하드웨어 가상화, 컨테이너 가상화, 네트워크 가상화

  • 어플리케이션을 실제 구동 환경으로부터 추상화 할 수 있는 논리 패키징 메커니즘을 제공 (애플리케이션과 애플리케이션이 동작하기 위해 필요한 라이브러리나 모듈 등을 묶어준다)
  • 이미지를 실행한 상태
  • 기존 가상화 방식: os 가상화 방식으로 VMware나 VirtualBox같은 가상 머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식
    • 단점: 무겁고 느려서 운영환경에서는 사용 불가


이미지(Image)

이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것이다

  • 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 변경/삭제되도 이미지는 변하지 않고 유지 된다
    스크린샷 2024-05-09 오전 9 23 20


레이어 저장 방식

레이어는 기존 이미지에 파일 추가가 필요할 때 처음부터 다시 다운로드 받는 방법이 아닌 해당 파일을 추가하기 위한 개념이다

  • 도커 이미지는 컨테이너를 실행하기 위한 정보를 모두 가지고 있기 때문에 용량이 클 수 밖에 없다(nMB ~ nGB). 기존 이미지에 파일 하나 추가하는 경우 nMB ~ nGB를 다시 다운받는건 비효율적이다. 이러한 문제 해결을 위해 레이어라는 개념이 사용된다
    스크린샷 2024-05-09 오전 9 27 53

  • ex 레이어 예시 참고


도커 기본 명령어



참고