엘리스트랙

도커 복습!

Zmann 2024. 4. 7. 10:54
728x90

 

 

 

 

 

 

도커(Docker)는 소프트웨어 개발과 배포를 간소화하고 자동화하기 위한 오픈 소스 플랫폼입니다. 도커를 사용하면 애플리케이션과 그 의존성을 컨테이너라는 격리된 환경에 패키징하여, 다양한 환경에서 일관된 방식으로 실행할 수 있습니다. 이는 개발에서 배포, 실행에 이르는 과정을 보다 빠르고 안정적이며 효율적으로 만들어 줍니다.

도커의 주요 개념

  • 컨테이너(Container): 가볍고 독립적으로 실행될 수 있는 소프트웨어 단위로, 애플리케이션과 그 실행에 필요한 모든 것(코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함합니다. 컨테이너는 소프트웨어를 환경으로부터 격리시켜 일관된 동작을 보장합니다.
  • 이미지(Image): 컨테이너를 생성하기 위한 템플릿으로, 애플리케이션과 그 의존성, 실행에 필요한 모든 파일을 포함하는 불변의 스냅샷입니다. 이미지는 컨테이너를 시작하는 데 사용됩니다.
  • 도커 데몬(Docker Daemon): 도커 API 요청을 수신하고 이미지, 컨테이너, 네트워크, 볼륨 등 도커의 객체를 관리하는 백그라운드 서비스입니다.
  • 도커 클라이언트(Docker Client): 사용자가 도커 데몬과 통신할 수 있게 해주는 도구로, 주로 도커 명령어를 사용하여 도커 데몬에게 작업을 요청합니다.
  • 도커 레지스트리(Docker Registry): 도커 이미지를 저장하고 공유하는 서비스로, Docker Hub가 가장 널리 사용되는 공개 레지스트리입니다. 사용자는 자신의 프라이빗 레지스트리를 구축할 수도 있습니다.

도커의 장점

  • 이식성: 애플리케이션이 컨테이너 내에서 실행되므로, 어떤 환경에서든 동일하게 작동합니다.
  • 경량성: 컨테이너는 가상 머신보다 훨씬 가볍고, 시스템 자원을 효율적으로 사용합니다.
  • 빠른 시작: 컨테이너는 가상 머신에 비해 시작 시간이 매우 짧습니다.
  • 버전 관리와 롤백: 이미지를 사용하면 애플리케이션의 버전을 쉽게 관리하고 필요 시 이전 버전으로 롤백할 수 있습니다.
  • 개발과 운영의 일관성: 개발, 테스트, 운영 환경이 동일하므로, "개발환경에서는 잘 되는데 실제 환경에서는 안 돼!" 같은 문제를 방지할 수 있습니다.

도커 사용 예시

  1. 웹 애플리케이션 개발 및 배포: 도커를 사용하면 개발자는 로컬 개발 환경에서 애플리케이션을 개발하고, 동일한 컨테이너를 테스트 및 프로덕션 환경에 배포할 수 있습니다. 이는 환경 간의 차이로 인한 문제를 최소화합니다.
  2. 마이크로서비스 아키텍처: 도커는 각각의 마이크로서비스를 독립적인 컨테이너로 패키징하여 관리할 수 있게 해줍니다. 이를 통해 서비스 간의 의존성을 줄이고, 개별 서비스의 배포와 확장을 보다 쉽게 할 수 있습니다.
  3. 개발/테스트 환경 일관성 보장: 도커를 사용하면 개발자와 테스터가 완전히 동일한 환경에서 작업할 수 있습니다. 이는 "내 컴퓨터에서는 잘 작동하는데..." 같은 문제를 해결해줍니다.
  4. 지속적 통합(CI) 및 지속적 배포(CD): 도커는 CI/CD 파이프라인에 통합하기 쉽습니다. 코드의 변경 사항이 감지되면 자동으로 도커 이미지를 빌드하고, 테스트를 실행한 후, 변경된 애플리케이션을 배포할 수 있습니다.
  5. 소프트웨어 평가 및 교육: 도커를 사용하면 소프트웨어 또는 새로운 기술을 쉽게 평가하고 배워볼 수 있습니다. 도커 컨테이너는 격리되어 있기 때문에 시스템에 영향을 주지 않으면서 다양한 소프트웨어를 설치하고 실험해볼 수 있습니다.

 

 

728x90