Docker란?
"로컬에서는 작동하는데, 서버에서는 작동하지 않아"를 해결하기 위해 나온 기술입니다.
Docker는 애플리케이션과 애플리케이션의 의존성을 일관된 환경에서 패키징하여 개발, 배포 및 실행을 가능하게 하는 플랫폼입니다.
Docker를 사용하면 애플리케이션을 "컨테이너"라는 패키지에 담아, 다양한 환경에서 동일하게 작동하게 할 수 있습니다.
간단히 말하자면 Docker는 컨테이너로 만들 수 있고 어디서든 돌아갑니다.
Docker를 사용하는 이유(특징)
- 환경 일관성
개발을 하다보면 팀원들과의 환경, 버전이 달라서 이슈를 겪었던 경험이 있을 겁니다.
또는 "내 로컬에서는 되는데 왜 서버에 올렸을 때는 안되지?" 라는 경험이 있었을 겁니다.
Docker는 응용 프로그램과 그 의존성을 하나의 패키지로 포장하여 동일한 환경을 구성하도록 하여 "로컬에서는 작동했어요" 문제를 해결합니다.
또한 Dockerfile을 사용하여 설치할 언어, 프레임워크, 패키지 등을 미리 코드 형태로 명시하고 어느 컴퓨터에서든 쉽게 자동으로 설치할 수 있게 하였습니다.
그리고 도커 이미지를 만들어 여러 서버에 배포하여 동일한 환경을 구축할 수 있어 수평적확장(scale out)에 도움을 줍니다.
사실 도커를 사용하는 이유는 여기까지가 거의 주 목적입니다.
아래의 내용들은 참조 정도로 생각해주시면 됩니다..
- 경량화
Docker는 가상화보다 훨씬 가볍습니다.
전통적인 VM은 각각의 전체 운영체제를 실행하는 반면, Docker는 호스트 OS의 리눅스 커널을 공유하면서 독립적인 실행환경을 제공합니다.
따라서 Docker 컨테이너는 빠르게 시작되며, 더 적은 리소스를 사용합니다.
- Devops와 CI/CD
Docker는 개발과 운영 팀 사이의 격차를 줄이는 데 중요한 역할을 합니다.
Docker를 사용하면, 개발자는 코드를 컨테이너에 패키징하여 운영 팀에게 전달할 수 있으며, 운영 팀은 해당 컨테이너를 프로덕션 환경에 배포할 수 있습니다.
이로 인해 CI/CD(지속적 통합 및 지속적 배포) 프로세스가 간소화되고 효율화됩니다.
- 모듈화와 확장성
Docker는 마이크로서비스 아키텍처의 도입과 함께 인기를 얻었습니다.
마이크로서비스는 각기 독립적으로 배포 및 확장 할 수 있는 작은 서비스로 애플리케이션을 분할하는 방법론입니다.
Docker는 이러한 서비스 각각을 컨테이너화하여 관리, 배포, 확장하기 쉽게 만듭니다.
- 커뮤니티 및 에코시스템
Docker는 강력한 커뮤니티 지원과 함께 성장했습니다.
Docker Hub와 같은 플랫폼은 수많은 준비된 이미지를 제공하여 개발을 가속화합니다.
'개발 > Docker' 카테고리의 다른 글
Dockerfile 명령어 완전 분석: 컨테이너 구성의 모든 것 (1) | 2024.01.27 |
---|
댓글