도커(Docker) 알아보기

·2023년 12월 4일
0

etc.

목록 보기
6/7
post-thumbnail

🐳 도커란 무엇인가

도커컨테이너 기반의 오픈 소스 가상화 플랫폼이다. 먼저 컨테이너에 대한 이해가 필요하다.

가상 머신(VM) vs 컨테이너

컨테이너와 가상 머신은 둘다 프로세스, 네트워크, 파일 시스템을 격리할 수 있다는 장점이 있다. 그러나 이 둘의 작동 원리는 많이 다르다.

가상 머신

가상 머신은 컴퓨터 환경을 가상화하여 소프트웨어로 구현한 것이다. 공통적으로 하나의 서버가 있고 한 서버에는 어떤 운영 체제가 있든지 Host OS(맥 OS, 리눅스, 윈도우)가 올라간다. VM의 경우 호스트 OS에 의해 VM을 가상화시켜 주는 하이퍼바이저들이 있다. 하이퍼바이저를 사용해 원하는 운영 체제로 Guest OS를 올려 여러 VM을 만들 수 있다. Guest OS도 Host OS와 같이 하나의 OS를 독립적으로 가지고 있는 것처럼 사용 가능하다. 여러 애플리케이션들을 설치하고 각각의 서비스를 만들 수 있다.

가상 머신에서 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생한다. 또한 가상 머신을 배포하기 위해서는 이미지로 변환할 때 라이브러리, 커널 등을 포함하기 때문에 크기가 매우 커진다.

컨테이너

컨테이너는 가상화 소프트웨어를 사용해 하드웨어를 공유하는 형태로, 마치 한 대의 전용 서버가 있는 것처럼 이용할 수 있게 해 준다. 대표적으로 도커를 가장 많이 사용한다.

도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, namespace, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다. 또한 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에 애플리케이션을 구동하는 데 필요로 하는 라이브러리 및 실행 파일만 존재하기 때문에 이미지의 크기 또한 대폭 줄어든다.

도커 관련 주요 개념

도커 이미지

컨테이너를 생성하기 위해서는 설계도 역할을 하는 도커 이미지가 필요하다. VM을 생성할 때 사용하는 iso 파일과 비슷한 개념이다. 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.

  • 저장소 이름 : 이미지가 저장된 장소를 의미함 -> 저장소 이름이 명시되지 않는 이미지는 도커에서 기본적으로 제공하는 이미지 저장소인 도커 허브의 공식 이미지를 말함
  • 이미지 이름 : 해당 이미지가 어떤 역할을 하는지 나타냄
  • 태그 : 이미지의 버전 관리 또는 리비전(Revision) 관리에 사용

도커 볼륨

도커 컨테이너는 삭제와 생성이 매우 쉬워 삭제되는 경우 데이터를 복구할 수 없게 된다. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 수 있는 방법으로 도커 볼륨을 활용한다. 볼륨을 활용하는 방법에는 호스트와 볼륨을 공유, 볼륨 컨테이너를 활용, 도커가 관리하는 볼륨 등이 있다.

도커의 장점

1. 개발과 배포의 편의성

도커 컨테이너는 호스트 OS 위에서 실행되는 독립된 공간이다. 따라서 컨테이너 내부에서 설정 파일을 수정해도 호스트 OS에는 영향을 끼치지 않는다. 또한 배포하기 위해서는 해당 컨테이너를 도커 이미지로 만들어 운영 서버에 전달하기만 하면 된다. 이렇게 하여 각종 라이브러리 설치 등으로 인한 의존성에서 자유로워진다!

2. 독립성과 확장성

컨테이너 기반의 마이크로 서비스는 각 모듈을 독립된 형태로 구성하기 때문에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉬워진다.

profile
풀스택 개발자 기록집 📁

0개의 댓글