도커에 대한 어떤 것 : 1. 도커란 무엇인가?

MarkAny·2022년 3월 11일
22

Docker

목록 보기
1/1
post-thumbnail

[도커란 무엇인가]

개발팀, 운영팀 가리지 않고 누구나 좋아하는 도커. 도커란 무엇일까요?

도커는 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼입니다. 가상화란 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술이고, 컨테이너란 컨테이너가 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻합니다.

다시 말하자면, 도커는 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술이라고 할 수 있겠군요!


[가상화와 컨테이너]

가상화와 컨테이너에 대해 조금 더 이야기해 볼까요? 앞서 가상화는 하나의 하드웨어를 여러 개의 가상 머신으로 분할해 효율적으로 사용할 수 있는 기술이라고 언급했는데요, 분할된 가상 머신들은 각각 독립적인 환경으로 구동됩니다. 이 때 베이스가 되는 기존의 환경을 Host OS, 그리고 가상 머신으로 분할된 각각의 환경을 Guest OS라고 부릅니다.


가상 머신을 생성하기 위해서는 하이퍼바이저 또는 가상 머신 모니터라고 불리는 소프트웨어를 이용합니다. 하이퍼바이저는 호스트 하드웨어에 설치되어 호스트와 게스트를 나누는 역할을 하고, 각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 됩니다. 이 때 하이퍼바이저에 의해 생성된 게스트는 호스트나 다른 게스트와 상호 간섭하지 않고 완전히 분리된 환경에서 구동됩니다. 하이퍼바이저를 활용하면 마치 하드웨어가 여러 개인 것처럼 하나의 서버를 여러 명이 나눠 쓸 수도 있고, 컴퓨터 한 대에서 서로 다른 OS를 동시에 사용할 수도 있습니다.

하지만 가상 머신으로 무언가 하려면 반드시 하이퍼바이저를 거쳐야 하기 때문에 속도 저하가 필연적입니다. 또 가상 머신은 해당 환경을 구동하는 데 필요한 파일을 모두 포함하고 있기 때문에, 가상 머신을 배포할 때 만들어지는 이미지의 크기가 매우 커진다는 한계점이 있습니다.


하이퍼바이저와 달리 컨테이너는 가상의 OS를 만드는 것은 아닙니다. 컨테이너는 베이스 환경의 OS를 공유하면서 필요한 프로세스만 격리하는 방식으로, 커널을 공유하기 때문에 호스트 OS의 기능을 모두 사용할 수 있습니다. 그렇기 때문에 컨테이너 위에서는 호스트 OS와 다른 OS를 구동할 수 없습니다. 대신 격리시킬 애플리케이션과 거기에 필요한 파일이나 특정 라이브러리 등 종속 항목만 포함하기 때문에 배포를 위해 생성되는 이미지의 용량이 작아진다는 장점이 있습니다. 운영체제가 아닌 프로세스이며, 하이퍼바이저를 거칠 필요가 없어 실행 속도가 빠르기도 하고요.

이미지는 가상 머신이나 컨테이너 또는 프로그램을 실행하는 데 필요한 파일과 라이브러리, 설정 등을 가지고 있는 파일입니다. 이미지는 레이어라는 계층 구조로 이루어져 있는데, 변경 사항이 생기면 새로운 레이어를 추가해서 기록합니다. 이미지 전체를 새로 받지 않고 해당 레이어만 받는 것으로 이미지를 업데이트할 수 있다는 장점이 있지요.

이미지를 실행하면 프로세스, 즉 컨테이너가 됩니다.


[그래서 도커란 무엇인가]

이제 가상화와 컨테이너가 무엇인지 알게 되었으니 다시 도커로 돌아가 볼까요?

도커는 컨테이너 기반의 가상화 플랫폼입니다. 부두에서 컨테이너를 옮기고 관리하는 직업인 docker에서 따 온 이름에 걸맞게 컨테이너를 잘 다룰 수 있게 도와 주는 도구라고 할 수 있지요. 도커를 이용하면 이미지를 실행시켜 컨테이너로 만들거나, 생성된 컨테이너를 관리하거나, 컨테이너를 다시 이미지로 만드는 작업을 쉽게 할 수 있습니다.

도커는 아주 강력한 도구입니다. 개발 과정에서 다른 라이브러리와 충돌하는 것을 방지하기 위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때, 혹은 배포 중인 서비스를 받아서 실행해 볼 때도 유용하지요. 특히 배포 과정에서 도커를 사용해 필요한 파일들만 예쁘게 포장해서 이미지로 만들면 지긋지긋한 종속성 이슈에서 벗어날 수 있습니다. 서버 한 대에만 배포한다면 종속성은 큰 문제가 되지 않겠지만, 서버가 2대, 4대, 8대... 수백, 수천 대까지 늘어난다면 어떨까요? 파일 받고, 필요한 라이브러리 설치하고, 앗! 이거 먼저 설치해야 하는데... 도커를 사용하면 그냥 같은 이미지를 실행해서 컨테이너로 만들면 됩니다. 그래서 개발 팀도, 운영 팀도 도커를 사랑할 수밖에 없는 거죠.




이제 도커가 무엇인지 알게 되었습니다! 2편에서는 도커를 사용하는 방법에 대해 알아봅시다.

# MARKANY_둘러보기

profile
마크애니 기술 블로그 입니다.

2개의 댓글

comment-user-thumbnail
2023년 10월 3일

글 잘읽었습니다..! 아직 정확히는 모르겠지만 그래도 읽으면서 어느정도 감이 오네요 다음글도 기다리고 있겠습니다

답글 달기
comment-user-thumbnail
2024년 9월 2일

다음 편도 내줘요...

답글 달기