Cloud/Docker

Docker에 대해서 알아보기

jheaon 2024. 7. 25. 09:48

 


Docker

도커는 애플리케이션을 컨테이너화 하여 표준화된 환경에서 작업할 수 있도록 하는 플랫폼을 의미한다. 쉽게 말하자면 각자 다른 컴퓨터에서는 돌아가지 않는 애플리케이션을 환경을 도커를 통해 동일하게 맞춘 뒤, 도커 위에서 실행하면 안정적인 환경에서 개발을 진행할 수 있다.

여기서 나오는 컨테이너란 하나의 애플리케이션이 돌아갈 수 있도록 하는 단위이다. 위의 예제로 본다면, 파이썬을 돌릴 수 있는 환경 하나가 컨테이너 한 개다. 

 

 

 

 

 

작동 방식

도커는 컨테이너 환경으로 작동하며, 이와 비슷한 가상머신 환경에 대해 차이점을 설명하며 진행하고자 한다. 

https://aws.amazon.com/ko/docker/

 

가상머신 방식은 하이퍼바이저(물리적인 하드웨어 위에서 여러 가상머신(VM)을 관리하는 소프트웨어) 위에 각각의 자체 운영체제를 설치하고 실행하는 식으로 진행된다. 각각의 가상머신들은 각각의 운영체제를 가지고 있기 때문에, 서로 독립적인 시스템으로 동작함으로 한 VM에서 발생한 문제가 다른 VM으로 영향이 가지 않는다는 장점을 지니고 있다. 

 

컨테이너 방식은 하나의 가상 머신 위에 머신 위에 독립적인 애플리케이션의 환경을 컨테이너화 하여 실행하는 방식이다. 하나의 가상 머신 위에 실행되기 때문에, 운영체제의 커널을 공유하며 이로 인해 가볍고 빠르다는 장점을 가지고 있다. 

 

✏️ 커널 : 운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어 간의 상호작용을 관리하는 역할을 역할을 하고 있다. 주로 프로세스, 메모리, 파일시스템. 시스템 호출의 역할을 수행한다. 

 

 

 

이미지와 컨테이너

도커는 애플리케이션을 포장 및 전송하기 위해 도커 이미지를 사용한다. 도커 이미지란 파일을 포함한 애플리케이션 실행에 필요한 독립적인 환경을 포함한 템플릿을 의미한다. 그런 다음 해당 이미지를 참고하여 애플리케이션이 돌아가는 환경을 구축한 것이 바로 컨테이너이다. 

 

도커의 이미지는 여러 계층(Layer)으로 되어있는데, 각 계층은 하나의 명령(RUN, COPY, ADD)등을 실행한 결과이며 이런 계층 구조 덕분에 이미지를 효율적으로 저장하고 중복된 부분을 공유하여 저장공간을 아낄 수 있는 장점을 가지고 있다. 

 

https://phoenixnap.com/kb/docker-image-vs-container

 

 

 

 

Docker에서의 container란?

도커에서 컨테이너란 사용자가 기본 시스템에서 애플리케이션을 분리할 수 있는 가상화된 런타임 환경을 의미한다. 

컨테이너끼리는 서로 자율적이기 때문에 서로 방해를 하지 않는다. 또한 하드웨어 수준에서 가상화가 이루어지는 VM과는 달리 컨테이너는 애플리케이션 계층에서 가상화가 된다. 따라서 하나의 머신을 활용하고 커널을 공유하며 분리된 프로세스를 실행하기 위한 운영체제를 가상화할 수 있어서, 리소스를 많이 사용하지 않을 수 있다. 

 

https://phoenixnap.com/kb/docker-image-vs-container

 

 

 

'Cloud/Docker'의 다른글

  • 현재글 Docker에 대해서 알아보기

관련글