Server/Docker

도커와 Containerization

범데이 2024. 2. 14. 23:43

dev.to사이트를 둘러보다가 Docker 관련하여 일목요연하게 설명되어있는 포스팅이 있어서, 영어 원문을 번역하여 가져오게 되었다(원문 사이트: https://dev.to/hasanelsherbiny/docker-and-containerization-4p7d)

 

Docker 환경을 구축하기 이전에 Docker 의 특성에 대해 이해하는 내용이 될 것이다.

 


 

 

현대 소프트웨어 개발 세계에서 Docker는 애플리케이션이 개발, 배포 및 관리되는 방식을 혁신하는 획기적인 기술로 등장했다. 이 포스팅에서는 Docker의 개념, 이점, 구성 요소 및 소프트웨어 개발 환경에 대한 깊은 영향을 자세히 살펴본다.

 

 

 

 

Containerization이 무엇인가?

Containerization을 사용하면 개발자가 애플리케이션을 캡슐화할 수 있다. 필요한 모든 라이브러리, 종속성 및 구성과 함께 컨테이너라고 하는 경량의 독립형 단위로 만들어진다. 이러한 컨테이너는 다양한 환경에서 일관되게 실행될 수 있으므로 애플리케이션이 배포된 위치에 관계없이 동일한 방식으로 작동한다.

 

 

 

 

Docker는 무엇인가?

Docker는 애플리케이션과 해당 종속성을 패키징, 배포 및 관리하는 표준화된 방법을 제공하는 오픈소스 플랫폼이다. Docker는 기본적으로 containerization이라는 기술을 활용한다.

 

 

 

 

Docker를 사용하는 이유는 무엇인가?

일관성: 컨테이너는 개발, 테스트 및 프로덕션 환경 전반에서 일관된 애플리케이션 동작을 보장하여 “내 컴퓨터에서는 작동하는데요” 하는 두려운 문제를 줄인다.

 

  1. 격리: 컨테이너는 애플리케이션과 해당 종속성을 격리하여 여러 애플리케이션이 동일한 호스트환경을 공유할 때 발생할 수 있는 충돌 및 호환성 문제를 방지한다.
  2. 효율성: 컨테이너는 호스트 운영 체제의 커널을 공유하므로 리소스 소비 측면에서 가볍고 효율적이다.
  3. 이식성: Docker 컨테이너는 개발자의 노트북, 데이터 센터 서버, 클라우드 기반 환경 등 Docker를 지원하는 모든 플랫폼에서 실행될 수 있다.
  4. 확장성: Docker는 컨테이너의 빠른 복제를 허용하여 애플리케이션 확장을 단순화하고 증가된 트래픽을 더 쉽게 처리할 수 있도록 해준다.
  5. 빠른 배포: 컨테이너를 빠르게 가동 및 축소할 수 있으므로 업데이트와 수정 사항을 빠르게 배포할 수 있다.

 

 

 

Docker Components

  1. Docker Engine: Docker의 핵심으로 컨테이너 관리, 런타임, 이미지 구축을 담당한다. 이는 서버, REST API 및 명령줄 인터페이스로 구성된다.
    1. Images: Docker 이미지는 애플리케이션, 해당 코드, 런타임, 라이브러리 및 종속성을 정의하는 템플릿이다. 이미지는 컨테이너를 만드는 데 사용된다.
  2. Containers: 호스트 시스템에서 격리된 프로세스로 실행되는 Docker 이미지의 인스턴스이다.
    1. Dockerfile: Docker 이미지를 빌드하기 위한 지침이 포함된 텍스트 파일이다. 기본 이미지, 종속성, 구성 등을 지정한다.
    2. Registry: Docker 이미지용 저장소이다. 가장 잘 알려진 레지스트리는 Docker Hub이지만 내부용으로 개인 레지스트리를 설정할 수도 있다.

 

 

 

Docker Workflow

Develop: 개발자는 애플리케이션의 환경과 종속성을 정의하는 Dockerfile을 작성하여 Docker 이미지를 생성한다.

  1. Build: Docker 이미지는 Dockerfile의 지침을 따르는 docker build 명령을 사용하여 빌드된다.
  2. Ship: 이미지가 Docker 레지스트리로 푸시되어 distribution 및 deployment에 사용할 수 있다.
  3. Run: 컨테이너는 Docker 이미지를 사용하여 생성되고 시작된다. 개발자는 테스트 및 디버깅을 위해 자신의 컴퓨터에서 컨테이너를 실행할 수 있다.

 

Orchestrate: 복잡한 애플리케이션의 경우 Docker를 Kubernetes와 같은 오케스트레이션 도구와 통합하여 커넽이너 배포, 크기 조정 및 로드밸런싱을 관리할 수 있다.

 

CI/CD(Continuous Integration/Continuous Deployment): Docker는 테스트, 구축 및 배포 파이프라인의 자동화를 촉진하여 릴리스 주기를 단축한다.

 

하이브리드 클라우드 환경: Docker의 이식성 덕분에 온프레미스 환경과 클라우드 환경 간에 애플리케이션을 더 쉽게 이동할 수 있다.

 

 

 


#Reference

https://dev.to/hasanelsherbiny/docker-and-containerization-4p7d

반응형