DEVOPS/DOCKER

[Docker] 도커란 무엇인가?

연듀 2024. 3. 5. 21:21

 

도커란? 

 

도커는 '데이터 또는 프로그램을 격리시키는 기능을 제공하는 소프트웨어'이다.

이 기능은 주로 서버에 사용된다. 

다양한 프로그램과 데이터를 각각 독립된 환경에 격리하는 기능을 제공한다. 운영체제 통째로 격리한다. 

 

 

컨테이너와 도커 엔진

예를 들어 개인용 컴퓨터 또는 서버 상의 환경을 조립형 창고 같은 작은 방으로 분할한다 생각해보자. 그리고 이런 창고에 데이터나 프로그램을 두는 것이다.

이 조립형 창고를 컨테이너라고 한다. 

그리고 이 컨테이너를 다루는 기능을 제공하는 소프트웨어가 도커다. 

 

도커를 사용하려면 도커 소프트웨어 본체인 도커 엔진을 설치해야 한다. 그리고 도커 엔진을 사용해 컨테이너를 생성하고 구동시킬 수 있다.

 

 

이미지

컨테이너를 만드려면 도커 엔진 외에도 컨테이너의 빵틀과 같은 역할을 할 이미지가 필요하다.

담고 있는 소프트웨어의 종류에 따라 다양한 이미지를 사용한다.(아파치 컨테이너에는 아파치 이미지, MySQL컨테이너에는 MySQL이미지..)

 

컨테이너는 한 하나의 도커에서 여러 개를 만들 수도 있다.

 

 

리눅스 컴퓨터에서 사용

도커는 리눅스 운영체제가 필요하다. 컨테이너에서 동작시킬 프로그램도 리눅스 프로그램이다. 

윈도우나 macOS에서도 도커를 구동할 수는 있지만 내부적으로 리눅스 운영체제가 사용된다.

 

 

 

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

 

대부분의 프로그램은 단독으로 동작하는 것이 아니라 실행 환경이나 라이브러리, 다른 프로그램을 이용해 동작한다.

소프트웨어도 여러 개의 프로그램으로 구성된 경우가 많다. 

또한 다른 프로그램과 특정한 폴더 또는 디렉토리를 공유하거나 같은 경로에 설정 정보를 저장하는 경우도 있다. 

 

이 때문에 프로그램 하나를 수정하면 다른 프로그램에도 영향을 미치게 된다. 

연동 프로그램의 버전을 못맞출 수도 있고, 디렉터리 역시 설정 파일이 섞이거나 설정에 충돌이 날 수도 있다. 

 

도커 컨테이너를 사용하면 여러 프로그램이 한 서버에서 실행되면서 발생하는 문제를 해결할 수 있다.

완전히 독립된 환경이므로, 다른 프로그램과 격리된 상태가 된다. 

 

 

 

VM 과 도커의 차이

 

VM(Virtual Machine): 동일한 OS 에서 가상의 머신을 만들어 구동

한 운영체제 위에서 application은 각각의 고립된 다른 환경에서 구동함. OS를 포함하고 있기 때문에 무거움

Docker: 컨테이너 엔진이 Host OS에 접근해 필요한 작업을 해줌. 엔진만 설치하면 컨테이너를 만들어 고립화 할 수 있음. OS를 포함하지 않음