티스토리 뷰

DevOps

[Docker] 도커란 무엇인가

woo'^'chang 2022. 10. 24. 14:44

Docker

도커는 컨테이너 기술을 활용한 가상화 플랫폼입니다.

 

서버에서 컨테이너란 호스트 시스템의 다른 모든 프로세스와 격리된 프로세스입니다. 컨테이너 기술은 해당 컨테이너를 실행시킨 HostOS의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경으로 만드는 기술입니다.

 

가상화 기술은 물리적 자원을 효율적으로 활용하기 위해 가상의 머신을 만드는 기술입니다.

 

다시 정리하면 도커는 물리적 자원을 효율적으로 활용하기 위해 독립된 환경을 만드는 기술입니다.

사용 이유

애플리케이션의 개발과 배포가 편리해진다.

  • 동일하게 작성된 애플리케이션이라도 실행 환경이 달라지면 예상하지 못한 결과가 발생할 수 있습니다. 도커는 이미지에 애플리케이션뿐 아니라 개발 환경까지 담을 수 있기에 쉽게 동일한 환경에서 애플리케이션을 실행합니다.
  • 독립된 커널 OS가 존재하지 않기에 이미지 크기가 작아 애플리케이션의 배포 속도가 빠르고 자원을 효율적으로 사용합니다.

애플리케이션의 독립성과 확장성이 높아진다.

  • 독립된 컨테이너를 이용해 적은 비용으로 확장할 수 있습니다.

Docker Image

애플리케이션 운영에 필요한 프로그램, 소스 코드 및 라이브러리, 컴파일된 실행파일, 필요한 설정 및 종속성이 묶여 있는 형태를 의미합니다. 모든 정보가 담겨있기에 용량이 크지만 가상 머신에 비하면 작은 용량으로 추가 작업이 필요하지 않습니다.

 

이미지는 상태 값을 가지고 변하지 않고 하나의 이미지로 여러 컨테이너를 생성할 수 있습니다. DockerFile을 통해 도커 이미지를 생성하고 도커 허브를 통해 배포와 관리합니다.

Docker Container

도커 이미지를 실행시킨 상태로 이미지의 인스턴스라 할 수 있습니다. 독립된 환경에서 프로세스를 실행시키는 기술입니다.

 

컨테이너는 각각 독립적으로 실행되고 커널과 HostOS를 공유합니다. 컨테이너는 종료되더라도 메모리에 남아있기에 삭제를 위해서는 명시적으로 삭제가 필요합니다.

기존 가상화 기술과의 차이

기존 가상화 기술에서는 여러 개의 환경을 구축하기 위해서는 하이퍼바이저 기술을 사용합니다. 하이퍼바이저는 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행시키기 위한 논리적 플랫폼입니다. 하나 이상의 가상 머신을 실행하는 컴퓨터는 호스트(Host)가 되고 각 가상 머신들은 게스트(Guest)가 됩니다.

 

가상 시스템상에서는 본인의 하드웨어, 메모리 및 리소스가 있는 것처럼 보이기에 자체 프로세스를 실행할 수 있습니다. 하지만 해당 리소스들은 하이퍼바이저가 호스트 컴퓨터의 리소스를 할당해준 것입니다. 논리적으로는 분리되어 있기에 가상 시스템 간 오류의 전파는 발생하지 않습니다.

 

도커는 도커 엔진 위에서 컨테이너가 독립적으로 실행되고 있습니다. 컨테이너는 HostOS 커널을 공유하기에 하이퍼바이저 기술이 사용되지 않고 GuestOS가 필요하지 않아 훨씬 가볍다는 장점이 있습니다.

 

이게 가능한 이유는 Docker 또한 하나의 VM으로 하이퍼바이저를 포함하고 있고 GuestOS가 존재하기에 위에서 동작하는 컨테이너는 개별의 OS가 필요하지 않게 됩니다.

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Total
Today
Yesterday