본문 바로가기
DevOps/Docker

[Docker] 도커의 개념 및 필요성

by Forsaken Developer 2023. 11. 29.
728x90
728x90
 

[Docker] 도커의 개념 및 필요성

도커(Docker)의 개념

도커는 컨테이너 기반 가상화 플랫폼으로, 애플리케이션과 그 종속성을 격리된 환경인 컨테이너에 패키징하여 효율적으로 실행 및 배포할 수 있도록 지원하는 오픈 소스 기술이다.

다양한 운영 체제 환경에서 일관된 실행 환경을 제공하며, 개발부터 배포까지의 프로세스를 간소화하고 표준화하는 데 중점을 두고 있다.

가상 머신과의 차이

가상 머신과 Docker 컨테이너는 운영 체제 위에서 실행되는 것에서 공통점을 가지지만, 가상 머신은 완전히 분리되어야 하는 반면, Docker 컨테이너는 리소스를 덜 차지하고 빠르게 부팅할 수 있는 등 가벼움이 특징이다.

도커(Docker)의 필요성

아래와 같은 이유로 애플리케이션을 개발하고 구축하며 배포하는 과정에서의 어려움은 막대하다.

Docker를 통해 컴포넌트들은 각자의 의존성과 라이브러리를 갖춘 분리된 컨테이너로 실행되어, 가상 머신과 운영 체제에서 환경과 컨테이너를 분리할 수 있게 되었고 이러한 문제의 해결책이 되었다.

운영 체제와의 호환성

애플리케이션 구축에 여러 가지 기술을 사용하게 되면서 기초가 되는 운영 체제와의 호환성이 문제가 된다.

사용하는 모든 서비스가 사용하려는 운영 체제의 버전과 호환이 되어야 했기 때문에 종종 운영 체제와 호환이 되지 않는 특정 버전의 서비스가 있으면 이 서비스들과 호환이 되는 다른 운영 체제를 찾아야만 한다.

서비스와 라이브러리의 호환성

 

운영 체제뿐만 아니라 서비스와 라이브러리 간의 호환성 문제도 중요하다.

각 서비스가 특정 라이브러리의 특정 버전과 호환되어야 하는 경우가 있다.

이로 인해 서로 다른 서비스 간에 발생하는 버전 충돌 문제를 해결하기 위해서는 지속적인 라이브러리 관리가 필요하다.

새로운 라이브러리 버전이 출시될 때마다 이를 서비스에 통합하고 테스트하는 프로세스가 필요하다.

개발환경 구축

 

새로운 개발자가 합류하면 개발 환경을 설정하는 작업은 번거롭고 복잡할 수 있다.

각 컴포넌트와 라이브러리의 버전을 일치시키는 것은 물론, 운영 체제에 필요한 설정도 정확히 맞춰야 한다.

이러한 프로세스는 실수의 여지가 있으며, 신규 개발자의 생산성을 높이기 위해서는 간편하고 일관된 방법이 필요하다.

Docker의 기본 작동 원리

Docker 컨테이너는 기반 운영 체제의 커널을 공유한다.

이는 Linux 기반 호스트에서 Docker가 Ubuntu, Debian, Fedora, SUSE, CentOS 등 다양한 운영 체제에 기반한 컨테이너를 실행할 수 있는 이유이다.

Windows는 커널을 공유하지 않아 Windows 기반 컨테이너를 Linux 호스트에서 실행할 수 없다.

컨테이너의 개념

도커의 핵심 개념 중 하나로, 격리된 환경에서 애플리케이션 및 그 종속성을 실행하는 단위이다.

컨테이너는 완전히 분리된 환경을 제공한다.

각 컨테이너는 자체 프로세스, 서비스, 네트워크 인터페이스, 마운트를 보유하고 있지만, 운영 체제 커널은 동일하다.

Docker는 이러한 컨테이너를 관리하며, 이미 10년 전부터 존재하던 컨테이너의 개념을 현대적으로 적용하였다.

이미지와 컨테이너

Docker에서 이미지는 애플리케이션을 만들기 위한 패키지 또는 템플릿으로, 컨테이너는 이미지를 실행하여 각자의 환경과 프로세스를 지닌 인스턴스이다.

Docker를 사용하면 이미지를 만들어 Docker Hub에 공유하고, 필요할 때 이미지를 사용해 어디서든 컨테이너를 실행할 수 있다.

728x90
반응형

'DevOps > Docker' 카테고리의 다른 글

[Docker] 도커 기본 명령어  (0) 2023.12.01
[Docker] 도커 설치 및 설정하기  (0) 2023.11.30

댓글