[Docker] 컨테이너와 도커의 이해

SJ·2022년 9월 28일
0

Container를 알아야 하는 이유

과거 장비에 OS를 깔고 각각의 시스템을 구축하는 방식 이후 장비에 hypervisor X를 이용해 각각 VM을 만들어 application을 올려 사용하였다.
그리고 지금은 어느 장비에서든 OS에 container engine을 올리고 application이 담긴 container를 돌려 구현하는 방식을 많이 채용하고 있다. 앞으로 이런 구조를 이해하고 업무를 container부터 알아야한다고 생각한다.

Container란

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼형태이다.
여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 들어 있다. 그러므로 실행 중인 환경에 관계 없이 언제나 동일하게 실행됩니다.

  • 컨테이너는 도커가 등장하기 전에도 있던 기술로, 격리된 공간에서 프로세스가 동작하는 기술입니다.

  • 기존의 VMware나 VirtualBox를 이용한 가상화 방식은 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다. 여러가지 OS를 가상화할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용하기 어려웠습니다. 이를 개선하기 위해 프로세스를 격리하는 방식이 등장합니다. 이 과정에서 나온 것이 container이고 CPU와 메모리를 필요한 만큼만 추가로 사용하고 성능적으로 손실이 거의 없습니다.

리눅스에서 사용하는 이유

  • 리눅스 커널 기능을 사용해야 하기 때문
    - chroot - 독립된 공간 형성
    • namespace - isolate 기능 지원
    • cgroup - 필요한만큼 HW 지원
    • 다음의 기능을 도커플랫폼에서 쓸 수 있도록 지원하는 것이 container engine
    • window나 mac에서 리눅스 기능을 사용해야하는 경우 hypervisor를 돌려 주어야 하기 때문에 linux를 사용하는 경우가 많다

일반 프로그램과 container의 차이점

  • 기능은 같지만 구조가 다르다.
  • 개발 환경까지 모두 포함되어 있는 것이 container

차이점 참조

사용하는 이유

  • 개발 환경이 모두 포함된 시스템이므로 확장/축소가 쉽고 MSA, DevOps에 적합.
  • 실제 시스템 자체를 타사 시스템에 배포하는 경우 예전 방식보다 훨씬 간편해짐
profile
효율적이고 효과적이게

0개의 댓글