본문 바로가기

[Docker]

[Docker] Docker의 기본 개념

Docker 란?

컨테이너 기반의 오픈소스 가상화 프로그램

 

가상화가 뭐지?

"물리적으로 하나인 자원을 논리적으로 여러 개처럼 나눠서 더 효율적으로, 유연하게 쓰려고."

"하나의 컴퓨터 하드웨어 위에 여러 개의 가짜 컴퓨터(VM)를 만들어서 각각 독립적인 OS를 돌릴 수 있게 해주는 기술"

 

원래는 컴퓨터 한대에 OS 한개만 사용가능 왜? CPU, 메모리, 저장장치 등 모든 자원을 OS 하나가 독점해서 사용

 

그런데 가상화를 통해

  • 물리 자원을 쪼개서 각 가상머신(VM)에 나눠줌
  • 그 위에 여러 개 OS 설치 가능
  • 동시에 동작 가능

 

그럼 컨테이너는?

우리가 생각하는 컨테이너

우리가 생각하는 컨테이너는 물건을 저장하고 목적지까지 이동시키는데 사용된다.

 

이 컨테이너를 왜 사용하지?

- 규격을 통일해 안에 뭐가 들었든지(옷, 전자제품) 배, 기사, 선박에 어디든 적재 가능 또한 컨테이너를 통째로 이동시켜 상하차에 용이

 

그럼 도커에서는 컨테이너를 어떻게 사용하지?

- 규격(환경)을 통일해 뭐가 들었든디(코드, 라이브러리, 실행환경, 버전세팅) AWS, PC, 리눅스, 윈도우 어디든 실행 가능 또한 컨테이너를 통째로 가져와 실행에 용이

 

이를 통해 버전을 다른 걸 설치했거나, 운영체제(Window, Mac OS 등)가 다르거나, 내 컴퓨터에 깔려있는 다른 프로그램(ex. 보안 프로그램)과 충돌이 일어났거나와 같은 다양한 이유로 프로그램이 정상적으로 설치되지 않는 상황 해결!

 

즉 컨테이너는 격리된 공간에서 프로세스를 실행하는 기술이다.  

 따라서 다른 OS에서도 동일한 환경을 만들어 개발이 가능하도록 한다.

 

하나의 컴퓨터에서 독립적인 환경을 만들어 활용가능하니까 효율적이다.

모든 컨테이너는 독립적인 저장공간(디스크)와 네트워크(IP,Port)를 가지고 있다.

 

 

그럼 Docker랑 Virtual Machine이랑 차이가 뭐임?

VM

VM은 컴퓨터를 통째로 가상화 한다. 즉 하나의 컴퓨터 위에 Hypervisor을 통해 각각의 OS를 설치하고 그 위에 필요한 앱을 실행하한다.

 

Docker

하지만 Docker는 컴퓨터 OS 위에 공간만 가상화한다. 즉 호스트 컴퓨터의 OS와 커널같은 Infrastructure는 공유하고 그 위에 필요한 앱이란 라이브러리를 설치한다.

 

 

 

쉽게 말하면 하나의 방(호스트 컴퓨터)를 쪼개서 효율적으로 사용하려고 하는데

VM 방식은 각 방마다 필요한 냉장고, 화장실(Infrastructure)을 설치해서 사용하는 방식이고

Docker는 각 방이 아닌 거실에 공용 냉장고, 공용 화장실을 사용하는 방식이다.

 

 

그렇기 때문에 VM은 용량이나 서버 자원이 많이 필요해 비효율적이다.

 

 

'[Docker]' 카테고리의 다른 글

[Docker] Docker 기본 CLI 익히기  (0) 2025.04.15