Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

소개

Docker 컨테이너를 컨테이너화 플랫폼으로 사용하는 이점에 관해 설명합니다. Docker 플랫폼에서 제공하는 인프라에 관해 설명합니다.

현대 조직은 비즈니스를 유치 및 유지하려면 신속하게 앱을 릴리스해야 합니다. 이 요구 사항에 따라 소프트웨어 개발 및 지원 팀은 항상 시간을 절약하고 비용을 절감하는 솔루션을 확인해야 합니다. 적합한 솔루션은 배포 환경을 만들고 구성하는 데 소요되는 시간을 줄이고 소프트웨어 배포 프로세스를 간소화합니다.

소프트웨어 컨테이너화 기술을 시간 절약 및 비용 절감 솔루션으로 사용하는 아이디어가 널리 사용됩니다. 하드웨어를 구성할 필요가 없으며, 배포를 호스팅하기 위한 운영 체제 및 소프트웨어를 설치하느라 시간을 소비하지 않아도 되는 것은 컨테이너의 장점 중 하나 입니다. 컨테이너는 서로 격리되며 여러 컨테이너가 동일한 하드웨어에서 실행될 수 있습니다. 이 구성을 통해 하드웨어를 보다 효율적으로 사용하고 애플리케이션의 보안을 개선할 수 있습니다.

Container/ MSA/DevOps

Image Added

Dockershim deprecation and AKS

컨테이너를 중심으로 기술 커뮤니티에 활력을 불어넣은 Docker의 엄청난 성공은 정말 놀라웠습니다. 컨테이너가 Kubernetes의 기반인 만큼, Docker가 플랫폼의 핵심적인 부분이었다는 것은 당연한 결과입니다. Kubernetes가 성숙해지고 커뮤니티와 고객의 요구가 커짐에 따라 dockershim(Kubernetes 플랫폼과 Docker 런타임 간의 인터페이스)을 통한 Docker와 Kubernetes의 긴밀한 결합은 진화해야 했습니다. 2020년 12월 2일, Kubernetes 1.20 릴리즈와 함께, Kubernetes는 향후 릴리즈에서 컨테이너 런타임으로 dockershim을 사용하는 Docker를 더 이상 사용하지 않는다고 발표했습니다.

곧 출시될 Kubernetes 1.24 릴리스에서는 dockershim이 제거될 예정입니다.

AKS에서 지원되는 모든 Kubernetes 버전은 Kubernetes 1.19 이상에서 기본 런타임으로 컨테이너를 사용합니다.
Windows Server 2019 노드 풀의 경우, 2021년 1월에 Kubernetes 1.23 이상에서 컨테이너를 기본 컨테이너 런타임으로 사용할 수 있게 되었다고 발표했습니다. 1.23 이전 버전의 Kubernetes 클러스터를 사용 중인 경우, 1.23에서 기본값으로 전환되기 전에 컨테이너를 활성화하여 새 노드 풀을 생성한 다음 파드를 새 풀로 이동할 수 있습니다.

Docker란 무엇인가요?

Docker는 컨테이너를 개발, 제공 및 실행하는 데 사용되는 컨테이너화 플랫폼입니다. Docker는 하이퍼바이저를 사용하지 않으며, 애플리케이션을 개발하고 테스트하는 경우 데스크톱 또는 노트북에서 Docker를 실행할 수 있습니다. Docker의 데스크톱 버전은 Linux, Windows 및 macOS를 지원합니다. 프로덕션 시스템의 경우 Linux 및 Microsoft Windows Server 2016 이상의 여러 변형을 포함한 서버 환경에 Docker를 사용할 수 있습니다. Azure를 포함한 많은 클라우드가 Docker를 지원합니다.

...

  • 호스팅 환경 관리

    종류와 관계없이 모든 환경에는 소프트웨어 및 하드웨어 관리가 둘 다 필요합니다. 각 환경에 설치된 소프트웨어 및 구성된 하드웨어가 모두 동일한지 확인해야 합니다. 또한 일관되고 쉽게 재현할 수 있는 방식으로 환경별로 네트워크 액세스, 데이터 스토리지 및 보안과 같은 측면을 구성해야 합니다.

...

  • 소프트웨어 제공의 연속성

    환경에 애플리케이션을 배포하는 작업은 일관되게 수행해야 합니다. 각 배포 패키지에는 모든 시스템 패키지, 이진 파일, 라이브러리, 구성 파일 및 모든 기능을 갖춘 애플리케이션을 보장하는 기타 항목이 포함되어야 포함되어야 니다. 또한 이 종속성이 모두 소프트웨어 버전 및 아키텍처와 일치하는지 확인해야 합니다.

  • 효율적인 하드웨어 사용

    배포된 각 애플리케이션은 동일한 하드웨어에서 실행되는 다른 애플리케이션과 격리된 방식으로 실행해야 합니다. 서버당 애플리케이션을 두 개 이상 실행하여 서로 성능을 저하하지 않고 리소스를 최대한 활용하려고 합니다.

  • 애플리케이션 이동성

    애플리케이션 이동성이 필수적인 이유는 다양합니다. 호스팅 환경에서 오류가 발생하거나 애플리케이션 규모를 확장해야 합니다. 두 경우에 모두 잠재적인 결과는 새 환경에 소프트웨어를 다시 배포하는 것입니다. 기본 인프라가 서로 다른 경우에도 한 호스트에서 다른 호스트로 소프트웨어를 이동하려고 합니다. 이 애플리케이션 이동은 고객의 가동 중지 시간을 줄이기 위해 최대한 빨리 이루어져야 합니다.

이 과제를 해결하는 데 도움이 되는 Docker 기능을 살펴보기 전에 몇 가지 개념을 설명하고 Docker 아키텍처의 간략한 개요를 살펴보겠습니다.

컨테이너란?

컨테이너는 소프트웨어 패키지를 빌드하고 실행할 수 있는 격리된 환경입니다. 이 소프트웨어 패키지에는 모든 컴퓨팅 환경에서 빠르고 안정적으로 애플리케이션을 실행하기 위한 코드 및 모든 종속성이 포함됩니다. 이 패키지를 컨테이너 이미지라고 합니다.

컨테이너 이미지는 애플리케이션을 배포하는 데 사용하는 단위가 됩니다.

VM vs Container

전통적인 배포 시대: 초기 조직은 애플리케이션을 물리 서버에서 실행했었다. 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제가 발생했다. 예를 들어 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고, 결과적으로는 다른 애플리케이션의 성능이 저하될 수 있었다. 이에 대한 해결책은 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 것이 있다. 그러나 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않았으므로, 물리 서버를 많이 유지하기 위해서 조직에게 많은 비용이 들었다.

...