도커(Docker)란 무엇인가

728x90
반응형

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

도커(Docker)란

 

 

  • 도커란 '데이터 또는 프로그램을 격리시키는' 기능을 제공하는 소프트웨어다.
  • 도커는 주로 서버에서 사용된다. 클라이언트 컴퓨터에서도 사용할 수 있지만 현 시점에서는 서버에서 사용하는 것이 주 용도다.
  • 개인용 컴퓨터에서 워드나 액셀, 메일 프로그램을 동시에 사용할 수도 있고, 서버에서 아파치, MariaDB 등 여러 프로그램이 함께 동작한다.
  • 도커는 이런 다양한 프로그램과 데이터를 각각 독립된 환경에 격리하는 기능을 제공한다.

 

컨테이너(Container)와 도커 엔진

  • 소프트웨어는 OS와 라이브러리에 의존성을 가진다. 하나의 컴퓨터에서 운영체제나 라이브러리 버전이 다른 소프트웨어를 한 번에 실행할 때 어려움을 가질 수 있고 관련된 구성을 관리하기 어렵다.
  • 컨테이너는 개별 소프트웨어의 실행에 필요한 실행 환경을 독립적으로 운용할 수 있도록 기반 환경 또는 다른 실행 환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체제 수준의 격리 기술이다.
  • 컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 메커니즘을 제공한다. 
  • 이 컨테이너를 다루는 기능을 제공하는 소프트웨어가 바로 도커다.
  • 도커를 사용하려면 도커 소프트웨어의 본체인 도커 엔진을 설치해야 한다. 그리고 도커 엔진을 통해 컨테이너를 생성하고 구동시킬 수 있다.
  • 컨테이너를 만들려면 도커 엔진 외에도 ISO 파일같은 이미지가 필요하다. 예를 들어, 아파치 컨테이너를 만들려면 아파치 이미지를 사용하고, MySQL 컨테이너를 만들려면 MySQL 이미지를 사용해야 한다.
  • 컨테이너는 여러 개를 만들 수도 있다. 용량이 허락하는 한 하나의 도커에서 여러 개를 만들 수 있다.

 

도커는 리눅스 컴퓨터에서 사용한다.

  • 도커를 사용하는 데는 몇 가지 제약 사항이 있다.
  • 종류와 상관없이 리눅스 운영체제가 필요하다. 윈도우나 macOS에서도 도커를 구동할 수는 있지만 이 경우 내부적으로 리눅스가 사용된다.
  • 컨테이너에서 동작시킬 프로그램도 리눅스용 프로그램이다.
  • 도커는 리눅스 운영체제에서 사용하는 것을 전제로 만들어졌기 때문이다.

 

 

데이터나 프로그램을 독립된 환경에 격리해야하는 이유

  • 설계할 때는 문제가 없었던 프로그램끼리도 실제로 설치해보면 오류를 일으키는 경우도 있다. 이러한 문제의 원인은 대부분 프로그램 간 공유에 있다.
  • 대부분의 프로그램은 프로그램 단독으로 동작하는 것이 아닌 어떤 실행 환경이나 라이브러리, 다른 프로그램을 이용해 동작한다. 예를 들어 PHP로 작성된 프로그램을 실행하려면 PHP 실행 환경이 필요하고, Python으로 작성된 프로그램은 다른 라이브러리를 사용하는 경우가 많다.
  • 소프트웨어는 단일 프로그램이 아니라 여러 개의 프로그램으로 구성된 경우가 많다. 예를 들어, 워드프레스는 데이터베이스를 갖추지 않으면 사용할 수 없다.
  • 다른 프로그램과 특정한 디렉토리를 공유하거나 같은 경로에 설정 정보를 저장하는 경우도 있다. 이러면 프로그램 하나를 업데이트하면 다른 프로그램에도 영향이 가게 된다.

 

프로그램 격리

  • 컨테이너 안에 들어있는 프로그램은 다른 프로그램과 격리된 상태가 된다.
  • 도커 컨테이너를 사용해 프로그램을 격리하면 여러 프로그램이 한 서버에서 실행되면서 발생하는 문제를 대부분 해결할 수 있다.
  • 예를 들어, 시스템 A는 Z 프로그램의 5.0 버전에서만 사용할 수 있고, 시스템 B는 Z 프로그램의 8.0 버전에서만 사용할 수 있다면 이들을 각각의 컨테이너로 만들어서 따로 격리하면 문제 없이 사용할 수 있다.

 

 

728x90
반응형