기타/클라우드

Docker(도커)란?

둥굴둥굴둥굴레차 2021. 7. 7. 12:35

 

 

Docker가 등장하기 전의 상황

하나의 서버에 여러개의 프로그램을 설치하게되면 버전 호환을 비롯해 다양한 문제가 발생하기 일쑤였다.

예를 들어 사용하는 라이브러리의 버전이 다르거나 동일한 포트를 사용할 경우엔 설치가 더욱 까다로웠다.

차라리 서로 다른 서버에 설치하는 것이 나았을 정도. 이렇게 되면 필요한 PC의 양이 많아진다.

또한, 컨테이너를 사용하는 것은 그리 사용자 친화적이지 않았음.

 

 

Docker(도커)란?

 

특정한 서비스를 컨테이너 이미지로 패키징하고 배포하는데 유용한
컨테이너 기반 오픈소스 가상화 플랫폼

 

 

애플리케이션을 컨테이너 이미지로 패키징해 기업 내에는 물론 다른 곳에도 쉽게 배치하고 재사용할 수 있다.
컨테이너 이미지를 생성, 관리, 공유하는 기능을 제공하고
이를 도커 호환 호스트에 배치해 컨테이너를 구동하기도 한다.

 

 

도커가 가져온 변화

  • 클라우드 이미지 보다 관리하기 쉽다.
  • 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하가 거의 없다.
  • 복잡한 기술(namespace, cgroups, network 등)을 몰라도 사용할 수 있다.
  • 이미지 빌드 기록이 남는다.
  • 코드와 설정으로 관리하여 재현 및 수정이 가능하다.
  • 오픈소스기 때문에 특정 회사의 기술에 종속적이지 않다.

 

 

[참고] 컨테이너란?

격리된 공간에서 프로세스가 동작하는 기술.

다양한 프로그램, 실행환경을 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌
가상화 기술의 하나지만 기존의 방식과는 조금 차이가 존재.

 

 

[참고] VM서버와 Docker서버(컨테이너 서버)의 차이점

 

 

상황 :: 만약 윈도우 환경에서 리눅스를 사용하고 싶다면?

 

 - VM 서버

  • Hypervisor(하이퍼바이저)를 사용해 Guest OS를 만들어 리눅스를 구동시킬 수 있도록 해준다.
  • 기존의 윈도우 환경은 Host OS가 되며 Guest OS를 만들어 준 것을 OS를 가상화 해주었다고 볼 수 있다.
  • Guest OS는 Host OS자원을 일부 가져와 사용하게 되는데, 때문에 속도가 느려지고 성능이 좋지 않아진다.
  • 따라서, 프로세스를 격리하는 방법이 필요해졌다.

 

 - Docker 서버 (컨테이너 서버)

  • 컨테이너에 필요한 커널을 Host 커널과 공유해서 사용하고,
    컨테이너 안은 애플리케이션을 구동하기 위해 필요한 라이브러리 및 실행 파일만 존재
  • 다시 말해, VM에 비해 격리 속성을 완화하여 애플리케이션 간에 OS를 공유한다고 표현하기도 한다.
  • 프로세스를 격리시켜주어 가볍고 빠르게 동작할 수 있도록 도와준다.
  • 때문에 하나의 서버에 여러 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어
    마치 가벼운 VM을 사용하는 느낌을 준다.
  • 따라서, 꼭 필요한 것만 담아 구동시키기 때문에 컨테이너를 이미지로 만들 경우 용량이 대폭 줄어듦.

 

 

Docker 이미지?

 

 

컨테이너 실행에 필요한 모든 파일과 설정값등을 포함하고 있는 것

 

상태값을 가지지 않고 변하지 않음.
같은 이미지에서 여러개의 컨테이너를 생성할 수 있음.
컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
컨테이너이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장됨.


즉, 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에
더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다.

새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 된다!


도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있다.
현재 공개된 도커 이미지는 50만개가 넘으며 누구나 쉽게 이미지를 만들고 배포할 수 있다.

 

 

 

🔽 Docker를 Window에 설치해보자! (Windows 10 home 버전이라면, 필수로 아래 게시글 참고!)

 

[2021.07.01] Docker 설치 과정 (Windows 10 Home 버전) + Docker란?

Docker란? 컨테이너 기반의 오픈소스 가상화 플랫폼 🔽 Docker에 대한 더 자세한 설명 (+도커 이미지? + 가상머신과 컨테이너의 차이점?) [2021.07.07] Docker(도커)란 / 도커 이미지? / 가상머신과 컨테이

pythontoomuchinformation.tistory.com

 


 

🔽 Docker에 대한 글을 작성하며 참고한 링크

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

subicura.com