개발팀, 운영팀 가리지 않고 누구나 좋아하는 도커. 도커란 무엇일까요?
도커는 컨테이너 기술을 기반으로 한 일종의 가상화 플랫폼입니다. 가상화란 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술이고, 컨테이너란 컨테이너가 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻합니다.
다시 말하자면, 도커는 독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술이라고 할 수 있겠군요!
가상화와 컨테이너에 대해 조금 더 이야기해 볼까요? 앞서 가상화는 하나의 하드웨어를 여러 개의 가상 머신으로 분할해 효율적으로 사용할 수 있는 기술이라고 언급했는데요, 분할된 가상 머신들은 각각 독립적인 환경으로 구동됩니다. 이 때 베이스가 되는 기존의 환경을 Host OS
, 그리고 가상 머신으로 분할된 각각의 환경을 Guest OS
라고 부릅니다.
하지만 가상 머신으로 무언가 하려면 반드시 하이퍼바이저를 거쳐야 하기 때문에 속도 저하가 필연적입니다. 또 가상 머신은 해당 환경을 구동하는 데 필요한 파일을 모두 포함하고 있기 때문에, 가상 머신을 배포할 때 만들어지는 이미지의 크기가 매우 커진다는 한계점이 있습니다.
이미지는 가상 머신이나 컨테이너 또는 프로그램을 실행하는 데 필요한 파일과 라이브러리, 설정 등을 가지고 있는 파일입니다. 이미지는 레이어라는 계층 구조로 이루어져 있는데, 변경 사항이 생기면 새로운 레이어를 추가해서 기록합니다. 이미지 전체를 새로 받지 않고 해당 레이어만 받는 것으로 이미지를 업데이트할 수 있다는 장점이 있지요.
이미지를 실행하면 프로세스, 즉 컨테이너가 됩니다.
이제 가상화와 컨테이너가 무엇인지 알게 되었으니 다시 도커로 돌아가 볼까요?
도커는 컨테이너 기반의 가상화 플랫폼입니다. 부두에서 컨테이너를 옮기고 관리하는 직업인 docker
에서 따 온 이름에 걸맞게 컨테이너를 잘 다룰 수 있게 도와 주는 도구라고 할 수 있지요. 도커를 이용하면 이미지를 실행시켜 컨테이너로 만들거나, 생성된 컨테이너를 관리하거나, 컨테이너를 다시 이미지로 만드는 작업을 쉽게 할 수 있습니다.
도커는 아주 강력한 도구입니다. 개발 과정에서 다른 라이브러리와 충돌하는 것을 방지하기 위해 격리된 환경이 필요할 때, 완성된 서비스를 배포할 때, 혹은 배포 중인 서비스를 받아서 실행해 볼 때도 유용하지요. 특히 배포 과정에서 도커를 사용해 필요한 파일들만 예쁘게 포장해서 이미지로 만들면 지긋지긋한 종속성 이슈에서 벗어날 수 있습니다. 서버 한 대에만 배포한다면 종속성은 큰 문제가 되지 않겠지만, 서버가 2대, 4대, 8대... 수백, 수천 대까지 늘어난다면 어떨까요? 파일 받고, 필요한 라이브러리 설치하고, 앗! 이거 먼저 설치해야 하는데... 도커를 사용하면 그냥 같은 이미지를 실행해서 컨테이너로 만들면 됩니다. 그래서 개발 팀도, 운영 팀도 도커를 사랑할 수밖에 없는 거죠.
이제 도커가 무엇인지 알게 되었습니다! 2편에서는 도커를 사용하는 방법에 대해 알아봅시다.
글 잘읽었습니다..! 아직 정확히는 모르겠지만 그래도 읽으면서 어느정도 감이 오네요 다음글도 기다리고 있겠습니다