Docker 와 컨테이너란?

김무연·2024년 4월 22일

저번 시간에 가상 머신에 대해 얘기했었다. 간단히 요약하자면 내 컴퓨터 위에 가상의 컴퓨터를 하나 더 만들어 독립적으로 실행되게 한다는 것이었는데 이는 Docker를 이해하기 위해 필요한 개념이다.

Docker란?

인터넷에 검색해보면 '컨테이너 기반으로 하는 오픈소스 가상화 플랫폼' 이라는 설명이 되어 있다. 즉 간단히 말하면 내 컴퓨터 내에 설치된 앱 (MySQL, Tomcat)등 앱을 독립적으로 실행하게 해주는 기술정도로 이해하면 될 것 같다.

그렇다면 vm(가상 머신)과 도커는 비슷한게 아닌가? 라는 혼동을 자아낼수 도 있다. 하지만 둘은 엄연히 다르고 차이점도 간단하다.

차이점은 개발환경 os의 유무이다. 도커는 기존의 os위에서 컨테이너 엔진을 통해 가상환경을 만들어 개발한다. 그에 반해 vm(가상머신)은 만들때 마다 os를 설치하고 그 위에 개발하게 된다.

즉 vm은 새로운 os를 설치하고 그에 필요한 세부적인 프로그램들을 또 설치해야 하기 때문에 리소스 및 용량을 많이 차지하고 시간이 더 오래 걸리게 된다.

container란?

위에서 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이라 하였다. 그렇다면 컨테이너란 무엇일까? 컨테이너란 독립된 공간에서 다른 사람이 셋팅해 놓은 환경을 설정해주는 기술이다.

조금 더 쉽게 이해해보자면 컨테이너란 한글로 직역했을때 창고라는 뜻이다. 이 말처럼 호스트 상에 논리적인 구획(컨테이너)를 만들고, 앱을 작동하기 위해 필요한 라이브러리, 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 따라서 컨테이너는 가상 머신과 마찬가지로 어플리케이션을 관련 라이브러리 및 종속항목들과 함께 패키지로 묶어 소프트 웨어 서비스 구동을 위한 격리 환경을 마련해 준다.

image란?

이미지는 위에서 말한 컨테이너 실행에 필요한 라이브러리 및 애플리케이션 등을 포함하고 있는 Archive File이다. 즉 쉽게 말하면 필요한 앱 및 라이브러리 등을 캡쳐해서 이미지로 찍어둔 것이라 생각하면 편하다.

이번에는 도커와 가상머신의 차이점과 도커란 어떤 것인지에 대해 간략하게 알아봤다. 이를 사용하는 법도 간단하다. 우리가 흔히 사용하는 git을 생각하면 된다. Container Registry라는 곳에서 git과 마찬가지로 push 및 pull을 통해 image를 주거나 받아와 설치 및 실행하게 된다.

profile
Notion에 정리된 공부한 글을 옮겨오는 중입니다... (진행중)

0개의 댓글