Docker

작성자 김성민
날짜 @2023년 9월 21일

요약

Docker란 명령어 Dockerfile docker-compose Test 참고

Docker란

Docker 소프트웨어는 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다.

설명을 간단히 하기 위에 도커 소프트웨어를 도커라 칭하겠다.

여기서 컨테이너란 운영체제 수준 가상화이다. 쉽게 말해 VM(가상 머신)과 비슷한 것이라고 보면 된다. 컨테이너는 독립적으로 운영된다. 도커 하나에 JAVA, Python, DB server 등 여러 서버, 플랫폼을 띄울 수 있고 독립적으로 구동한다. 즉 하나의 메인 서버에서 JAVA, Python 같은 것들을 동시에 여러 개 띄울 수 있다.

컨테이너와 VM(가상 머신) 비교

컨테이너와 가상 머신은 리소스 격리 및 할당 이점이 유사하지만 컨테이너가 하드웨어 대신 운영체제를 가상화하기 때문에 다르게 작동한다. 컨테이너는 휴대성이 뛰어나고 효율적이다.

컨테이너

컨테이너는 코드와 종속성을 함께 패키지하는 앱 계층의 추상화다. 여러 컨테이너가 동일한 시스템에서 실행될 수 있으며 OS 커널을 다른 컨테이너와 공유할 수 있으며, 각 컨테이너는 사용자 공간에서 격리된 프로세스로 실행된다.

컨테이너는 VM보다 공간을 덜 차지하고 더 많은 애플리케이션을 처리할 수 있으며 더 적은 수의 VM 및 운영체제가 필요하다.

가상 머신(Virtual Machine)

VM은 하나의 서버를 여러 서버로 바꾸는 물리적 하드웨어의 추상화다.

하이퍼바이저를 사용하면 단일 시스템에서 여러 VM을 실행할 수 있다. 각 VM에는 운영체제, 애플리케이션, 필수 바이너리 및 라이브러리의 전체 복사본이 포함되어 있으며 수십 GB를 차지한다. VM의 부팅 속도도 느려질 수 있다.


위의 설명만 봤을 땐 이럴거면 VM을 왜 써?? 라고 할 수 있지만 보안적인 측면에서는 VM을 따라잡을 수 없기에 두 개를 혼합해서 사용한다.