될때까지

((Docker)) 도커가 뭐야? 본문

학습/개념정리

((Docker)) 도커가 뭐야?

랖니 2022. 9. 12. 22:15
728x90

🐳 Docker

도커란, 컨테이너를 사용해 작업한 애플리케이션을 환경에 구애받지않고 빠르게 배포 및 관리할 수 있도록 도와주는 오픈소스 가상화 플랫폼이다. 그럼 이 도커를 쓰는 이유는 뭘까? 프로그램을 설치하려면 서버, 패키지, 운영체제 등에 맞는 버전을 설치해야하는데 이게 참 복잡하고 귀찮다. 하지만 도커를 이용해서 프로그램을 설치하면 비교적 쉽게 뚝딱 간단하게 진행할 수 있다. 

도커의 구조

 

🐸가상화

가상화란 하나의 물리적 서버에서 여러 운영체제와 애플리케이션을 실행할 수 있도록 하는 소프트웨어 기술을 말한다.

가상화기술이 나오기 전에는 1대의 서버를 하나의 용도로만 사용하고 남은 공간은 그대로 방치했었다. 그러다보니 프로그램 운영은 안정적이지만 남는 공간이 제대로 활용안되고 놀고있기 때문에 비효율적이였다. 

1. 호스트 가상화

윈도우10이나 mac OS와 같은 호스트OS에서 가상화 SW를 설치하고 이 SW위에서 게스트 OS를 작동시키는 기술이다. 호스트 OS위에서 또 다른 게스트 OS를 구동하니까 오버헤드(오버헤드 - 특정 기술을 수행하는 데 드는 간접적인 시간, 메모리 등의 자원)가 크다.

2. 하이퍼바이저 가상화

호스트 OS가 필요없다. 하드웨어위에 가상화 SW를 설치하고, 가상환경마다 별도의 OS가 작동한다. 하나의 물리적 서버에서 실행되고 있지만, 완전한 독립적 OS로 운영된다는 이야기. 가상환경 시작에 걸리는 오버헤드가 크다.

3. 컨테이너 가상화

호스트 OS위에 컨테이너 엔진을 설치하고 애플리케이션 작동에 필요한 환경들을 하나로 모아 각자가 별도의 서버인것처럼 사용하는 가상화. 컨테이너 기술은 우리가 사용할 OS를 가상화하지 않았고 단순히 프로세스만 격리시켰다.

-> 컨테이너 기술은 OS를 가상화하지 않고 단순히 프로세스만 격리시켰기 때문에 CPU나 메모리 사용도 해당 프로세스가 실행되는데 필요한 만큼만 사용된다. 따라서 타 가상화방식보다 빠르고 효율적이다.

도커와 기존 가상화의 차이점

 

🍎컨테이너

위의 컨테이너 가상화방식에서 호스트 OS위에서 각각의 Application형태로 동작하는데 이 앱들을 '컨테이너'라고 부른다.

  • 도커 이미지를 기반으로 생성되며 파일 시스템과 어플리케이션이 구체화되어 실행되는 상태를 말한다.
  • 한 서버는 여러개의 컨테이너를 가져도 되며 컨테이너는 각각 독립적으로 실행된다.
  • 컨테이너는 Kernel과 호스트 OS 자원을 공유한다.

도커 컨테이너

 

🌼이미지

도커에서 서비스 운영에 필요한 서버 프로그램, 소스 코드 및 라이브러리, 실행 파일 등을 묶는 형태를 도커 이미지라고 한다. 즉 특정 프로세스를 실행하기 위해(컨테이너 생성에 필요한) 모든 파일과 환경들을 가지고 있다.

  • 용량이 크지만 가상머신의 이미지에 비하면 굉장히 적은 편이다.
  • 하나의 이미지는 여러개의 컨테이너를 만들 수 있고 컨테이너를 삭제해도 이미지는 그대로 남아있다.
  • 도커 이미지들은 DockerHub을 통해 버전관리 및 배포가 가능하다. 
  • 도커 이미지는 Dockerfile을 빌드함으로써 만들 수 있다. 
728x90