개발 일지/CS

[Cloud] Docker

미숫가루설탕많이 2023. 4. 3. 00:01

 Docker는 컨테이너화된 애플리케이션을 배포하고 실행하기 위한 오픈소스 플랫폼이다. 기존의 가상화 기술과는 달리, 호스트 운영체제와 컨테이너 운영체제 사이에 가벼운 추상화 계층을 제공한다. 이를 통해 동일한 운영체제에서 여러 개의 컨테이너가 실행되며, 매우 가볍고 빠르게 실행될 수 있다.

 

 이러한 컨테이너 방식은 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다는 장점이 있다. 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성하기 때문에 의존성 충돌 문제를 해결해 준다. 또한 개발과 배포 환경을 일치시키고 수평 확장을 쉽게 할 수 있으며 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다.

 

 Docker는 개발, 테스트, 배포 등 여러 단계에서 유용하게 사용될 수 있다. 애플리케이션 개발 과정에서는 개발 환경과 프로덕션 환경을 일치시키기 위해 Docker를 사용할 수 있고 테스트 과정에서는 다양한 환경에서 테스트할 수 있다. 배포 과정에서는 Docker 이미지를 사용하여 더 쉽고 빠르게 애플리케이션을 배포할 수 있다.

 

 

 

 

구조

 Docker는 크게 3가지 구성 요소로 이루어져 있다.

 

  • Docker Client
    : 사용자가 입력한 명령어를 해석하고 Docker 서버로 전송한다.

  • Docker Server
    : Docker Client로부터 받은 명령어를 실행하고 컨테이너를 관리한다.

  • Docker Registry
    : Docker 이미지를 저장하고 관리하는 저장소이다.

 

 

 

 

특징

 Docker는 다음과 같은 특징을 가지고 있다.

 

  • 이식성(Portability)
    : Docker 컨테이너는 호스트 시스템에 독립적으로 동작하기 때문에 어떤 환경에서도 동일한 방식으로 실행될 수 있다. 이를 통해 애플리케이션을 쉽게 이식할 수 있다.

  • 격리(Isolation)
    : Docker 컨테이너는 호스트 시스템으로부터 완전히 격리되어 실행된다. 이를 통해 서로 다른 환경에서 동일한 애플리케이션을 실행할 수 있다.

  • 확장성
    : Docker 컨테이너를 사용하여 애플리케이션을 실행하면 필요에 따라 컨테이너 수를 늘리거나 줄일 수 있다.

  • 버전 관리
    : Docker 이미지를 빌드할 때, 각 버전별로 태그를 붙여서 관리할 수 있다.

  • 환경 일관성
    : Docker는 애플리케이션을 실행하는데 필요한 환경을 Dockerfile에 정의하므로, 다른 환경에서도 동일한 애플리케이션을 실행할 수 있다.

  • 빠른 배포 속도
    : Docker는 이미지를 사용하여 애플리케이션을 실행하기 때문에 애플리케이션 배포 과정이 빠르다.

  • 관리 용이성
    : Docker는 컨테이너 단위로 애플리케이션을 관리하기 때문에 애플리케이션의 업데이트나 롤백 등 관리 작업이 쉽다.

  • 보안성
    : Docker는 컨테이너 단위로 격리된 실행 환경을 제공하므로 애플리케이션의 보안을 강화할 수 있다.

 

 

 

 

 

 
한계점
  • Docker는 다양한 환경에서 사용될 수 있지만 특정 분야에 특화된 컨테이너 기술이 필요한 경우에는 Docker가 제공하지 않는 기능이 필요할 수 있다.

  • Docker는 컨테이너 단위로 격리된 실행 환경을 제공하므로 애플리케이션의 보안을 강화할 수 있지만, 다른 말로는 도커 이미지 내부에서 악성 코드가 실행될 수 있다는 말도 된다. 물론, Docker는 컨테이너 내부에서 실행되는 애플리케이션의 보안을 제공하고 Dokcer 자체도 취약점에 대한 대응 및 보완을 지속적으로 진행하고 있지만 컨테이너를 배포하는 과정에서 보안에 대한 고려가 필요하다.

  • 컨테이거나 실행될 때마다 리소스를 할당하기 때문에 다수의 컨테이너가 실행될 경우 메모리 사용량이 많아져 성능 저하가 발생할 수 있다. 따라서, 적절한 리소스 할당 및 관리가 필요하다.

  • 컨테이너는 실행 중인 호스트의 파일 시스템을 공유하지 않으므로, 데이터를 컨테이너 내부에 저장할 경우 컨테이너가 삭제되면 함께 삭제될 수 있다. 따라서 별도의 데이터 볼륨을 사용해야 한다.
 

'개발 일지 > CS' 카테고리의 다른 글

[Cloud] Load Balancer  (0) 2023.04.06
[Cloud] Proxy Server  (0) 2023.04.05
[Cloud] Cloud Storage(S3)  (0) 2023.04.02
[Cloud] RDS  (0) 2023.04.01
[Cloud] Amazon EC2  (0) 2023.03.31