Docker가 뭐야?

2HJ·2024년 6월 13일

Docker

docker는 개발환경을 분리하여 배포를 손쉽게 하도록 도와주는 플랫폼입니다.하나의 컴퓨터에서 여러 프로젝트를 개발하다보면, 각각의 프로젝트마다 요구하는 라이브러리 버전이 달라 그때그때 고쳐줘야하는 케이스가 발생하는데요.docker는 격리된 환경을 제공함으로, 각기 다른 환경에서 다른 프로그램, 라이브러리를 사용하더라도 충돌문제가 발생하지 않습니다.

Container

하나의 물리적 서버에서 분리된 환경(=서버)를 조성하여 여러 대의 서버를 이용할 수 있게 해주는 linux의 가상화 기술입니다.

컨테이너는 운영체제 단의 가상화 기술로 host의 운영체제를 공유하지만, 다른 자원은 공유하지 않기때문에 각각의 운영체제를 설치해야하는 윈도우의 가상 머신(하드웨어 단)보다 효율적인 기술입니다.

docker는 linux의 container 기술을 활용한 플랫폼이기때문에 docker를 설치하려면 linux가 요구됩니다.때문에 윈도우 환경에서 docker를 사용하고싶다면 가상머신이나 wsl2(Windows Subsystem for Linux2)를 통해 가상서버를 만들어야 합니다.(wsl2 역시 가상화 기술이지만 vm보다 적은 리소스가 요구됩니다.wsl2은 윈도우 10 버전부터 지원합니다)

윈도우 안에 리눅스 안에 여러 컨테이너(=서버)를 사용하는 셈입니다.

window 가상화의 구조
window os -> 하이퍼 바이저(하드웨어 가상화) -> 각각의 os

linux 컨테이너의 구조
linux os -> 각각의 container

docker 컨테이너의 구조
linux os -> docker engine -> 각각의 container

docker engine은 image 파일을 통해 컨테이너를 쉽게 조성할 수 있습니다. 리눅스 컨테이너에서는 각각의 컨테이너에서 따로따로 프로그램이나 파일을 다운로드해야 하는 문제가 있는데, Docker를 활용하면 image 파일을 통해 컨테이너에 필요한 자원을 쉽게 설치할 수 있습니다.

여기서 image는 그림파일을 의미하는게 아니라 도커 내에서 사용되는 템플릿 파일로, 원본 애플리케이션 혹은 파일들이 패키징된 형태입니다.예를 들어 톰캣, jdk 이미지는 docker engine을 통해 container에 각각 톰캣과 jdk가 될 수 있습니다.

profile
kokoko

0개의 댓글