정리 노트

Docker 본문

개념 정리

Docker

꿈만 꾸는 학부생 2022. 12. 22. 13:13
728x90

https://www.docker.com/resources/what-container/

 

What is a Container? | Docker

A container is a unit of software that packages code and its dependencies so the application runs quickly and reliably across computing environments.

www.docker.com

Docker

만약 저희가 파이썬으로 앱을 만들어서 배포하면 사용자는 파이썬과 파이썬 interpreter, 파이썬 파일들도 모두 다운로드하여야 하는 번거로움이 생깁니다. 이런 때에 Docker를 사용하면 docker container image만 다운로드하여도 앱을 실행할 수 있다는 장점이 있습니다.

이렇듯, Docker는 애플리케이션을 컨테이너에 포함시켜서 개발할 수 있는 플랫폼입니다. 컨테이너를 이용해 앱을 쉽게 배포할 수 있는 기술은 최근에 등장했지만 컨테이너 자체는 새로운 기술이 아닙니다.

컨테이너

애플리케이션이 다른 컴퓨팅 환경에서도 빠르고, 안정적으로 실행될 수 있도록 애플리케이션의 코드와 의존성을 모두 패키징 한 소프트웨어입니다. 컨테이너는 프로세서 같은 것으로, Docker container image를 실행시키는 것으로 컨테이너가 실행되는 runtime instance입니다.

Docker container image

하나의 애플리케이션을 작동시키는데 필요한 모든 것(코드, 런타임, 라이브러리, 설정 등)을 가지고 있는 가볍고, 독립적이고, 실행 가능한 소프트웨어 패키지입니다. Image는 런타임에서 컨테이너가 됩니다.

컨테이너 vs VM(Virtual Machine)

  • 컨테이너: Host OS(커널) 위에 container들이 있습니다. 이 컨테이너들을 관리하는 플랫폼이 Docker입니다. 컨테이너는 특정 앱을 실행하기 위한 필요한 것들(bin file이나 라이브러리 등)만 모아서 구성되므로 VM보다 훨씬 더 적은 공간을 차지합니다.
  • VM: Hypervisor위에 여러 VM들을 올릴 수 있습니다. 특정 앱을 실행하기 위한 모든 정보들뿐만 아니라 각각이 필요한 OS(커널)까지 가지고 있어서 VM은 큰 공간을 필요로 합니다.

[source] https://www.docker.com/resources/what-container/

Services in Docker

비디오 공유 사이트를 하나의 애플리케이션이라 하면 이 애플리케이션에는 여러 서비스들이 필요할 것입니다.

  • 앱 데이터를 DB에 저장하는 서비스
  • 비디오 transcoding 서비스
  • front-end 서비스
  • 기타 서비스들

Docker에서는 이 서비스들을 'container in production'이라고 합니다. 즉 하나의 서비스는 하나의 container, 하나의 image를 실행한다는 것입니다.

  • 앱 데이터를 DB에 저장하는 컨테이너(이미지)
  • 비디오 transcoding 컨테이너(이미지)
  • front-end 컨테이너(이미지)
  • 기타 컨테이너(이미지)들

각자 어느 포트를 사용하는지, 몇 개의 복제본(replica)이 필요한지(하나에 요청이 많이 오면 처리 못 할 수도 있기 때문에 분산시키는 목적), 메모리나 CPU 등이 얼마나 필요한지 등을 정의해야 합니다.

Swarm clusters

Swarm은 머신들의 집합으로, docker를 실행하고 있고 cluster에 참여하고 있는 머신들의 집합을 얘기합니다. 이 cluster에 참여하고 있는 각 머신을 node라고 합니다. 'docker swarm init' 명령어를 실행한 machine이 swarm cluster의 매니저가 되고, 매니저는 또한 worker(manager가 아닌 node)들이 이 cluster에 join 하는 것을 허락하는 역할을 수행합니다. 'docker swarm init' 명령어를 실행하면 토큰 값이 하나 생기는데, 이 토큰을 알려줘야 다른 머신들이 swarm cluster에 join 할 수 있습니다. 참여한 worker들은 capacity만(cpu, memory) 제공하는 역할을 수행합니다.

 

728x90

'개념 정리' 카테고리의 다른 글

Amazon Cognito에 대하여  (0) 2023.02.22
OAuth  (0) 2023.02.15
영상 처리에서의 edge 검출  (0) 2022.10.09
영상 처리의 세 가지 기본 연산  (2) 2022.09.21
Git(2)  (0) 2022.07.06