Docker

최건우·2023년 3월 27일
0

도커

목록 보기
1/1

Docker overview

Docker로 해결할 수 있는 문제

1. 개발 스택과 OS 버전의 충돌 문제

하나의 서비스에 사용되는 여러가지의 stack들이 특정 OS 버전과 호환되지 않으면, 개발환경 구성부터 다시 시작해야 한다.

2. 라이브러리, 의존성과 OS 버전의 충돌 문제

하나의 애플리케이션에는 여러 가지의 라이브러리를 사용하게 되는데, 이는 때때로 아주 복잡하다. 특정 라이브러리에 적합한 개발환경을 갖춰놓으면, 다른 라이브러리에서 버전 충돌 이슈가 생길 때가 있기 때문이다.

3. 기나긴 개발환경 세팅 시간

새로운 팀원이 오거나 작업에 사용하는 PC나 가상머신을 바꿔야 할 때, 매번 작업환경을 일일이 새로 설치하느라 많은 시간이 소요된다.

결과적으로, 도커를 사용함으로써 다음과 같이 하나의 애플리케이션을 구성하는 각 스택이 동일한 하드웨어, OS 위에서 독립적으로 분리된 컨테이너 환경에서 가동될 수 있게 된다.

⬆️ 출처: https://kodekloud.com/courses/docker-for-the-absolute-beginner/

container란?

  • 컨테이너란, 서로 완전히 격리된 상태에서 각각의 고유한 네트워크, 프로세스, 서비스를 갖는 격리된 환경을 의미한다.
    • 격리되어있기 때문에, 하나의 컨테이너에서 생긴 문제는 다른 컨테이너에 영향을 주지 않는다.
  • 컨테이너들은 OS Kernel을 공유한다. 즉, 하나의 OS 위에서 모든 컨테이너들이 돌아간다는 뜻이다.
    • 이 때문에, OS단에서 문제가 생길 경우에는 모든 컨테이너에 영향이 갈 수 있다. ⬆️ 출처: https://kodekloud.com/courses/docker-for-the-absolute-beginner/
  • 컨테이너는 도커에서 새롭게 창시된 개념이 아니다. 도커는 컨테이너를 통해 애플리케이션의 개발, 배포를 편리하게 해 주는 오픈소스 플랫폼이다.

container vs virtual machine

⬆️ 출처: https://kodekloud.com/courses/docker-for-the-absolute-beginner/
  • Container
    • 컨테이너는 하드웨어 위의 OS, OS 위의 도커, 도커 위의 컨테이너로 구성된다.
    • 도커는 컨테이너를 관리함으로써 각 컨테이너가 고유한 애플리케이션, 라이브러리, dependencies를 갖게 해 준다.
    • 따라서 각 컨테이너는 OS Kernel을 공유한다. 만약 OS가 리눅스 ubuntu라면 다른 리눅스 배포판(fedora, suse, centos 등)의 컨테이너를 가동할 수 있다. 하지만, 다른 OS kernel을 갖는 Windows 기반 컨테이너는 가동할 수 없다.
  • Virtual machine
    • 가상머신은 하드웨어 위의 Hypervisor, Hypervisor 위의 가상머신으로 구성된다.
    • Hypervisor 위의 각 가상머신은 고유한 OS를 갖고, 그 위에 애플리케이션, 라이브러리, dependencies를 갖는다.
  • 비교
    • Resouce Utilization: Virtual machine > Container
      • 다수의 OS와 커널들이 운영되기 때문이다.
    • Disk space: Virtual machine > Container
      • OS가 직접 들어가므로 컨테이너보다 용량이 더 크기 때문이다.
      • 컨테이너는 MB 단위의 경량화된 크기로 관리할 수 있는 반면, Virtual Machine은 GB 단위로까지 커질 수 있다.
    • Booting time: Virtual machine > Container
      • Virtual machine은 OS 전체를 부팅해야 하므로 부팅 시간이 상대적으로 긴 반면, 컨테이너는 크기가 가볍기 때문에 부팅 시간이 보다 짧다.
    • 자원의 공유와 격리 수준: Virtual machine > Container
      • 컨테이너는 커널 등의 리소스를 공유하기 때문에 격리 정도가 Virtual machine에 비해 덜하며, Virtual machine은 서로 다른 OS와 커널을 갖기 때문에, 완전히 격리되어 있다.




출처: https://kodekloud.com/courses/docker-for-the-absolute-beginner/

profile
부족한 경험을 채우기 위한 나만의 기록 공간

0개의 댓글