도커
프로그램과 필요한 부품을 한 상자에 담아 어떤 컴퓨터에서든 똑같이 작동하게 만드는 표준 규격 컨테이너예요.
정의 도커(Docker)는 프로그램이 실행되는 데 필요한 모든 코드와 설정, 보조 프로그램을 '컨테이너'라는 표준 규격 상자에 통째로 담아, 어떤 컴퓨터에서든 완벽하게 똑같이 실행할 수 있도록 만들어 주는 소프트웨어 플랫폼이에요.
"내 컴퓨터에서는 잘 됐는데?" 문제를 해결해요
개발자들이 가장 자주 겪는 골칫거리 중 하나는 "제 노트북에서는 분명 잘 되는데 왜 서버에서는 안 돌아갈까요?"라는 상황이에요. 컴퓨터마다 운영체제(윈도우, 맥, 리눅스)가 다르고, 설치된 언어나 부속 프로그램(라이브러리)의 버전도 전부 제각각이기 때문이에요.
옛날 항구에서는 화물의 크기와 모양이 제각각이라 배에 짐을 싣는 일이 몹시 힘들었어요. 하지만 크기가 똑같은 네모난 '화물 컨테이너'가 도입되면서 트럭, 기차, 배 어디든 짐을 척척 옮길 수 있게 되었죠.
도커는 이 방식을 컴퓨터 프로그램에 그대로 적용했어요. 프로그램 실행에 필요한 파일과 환경 설정을 하나의 규격화된 컨테이너에 통째로 포장해 줘요. 덕분에 내 컴퓨터에서 잘 돌아간 상자는 다른 사람의 컴퓨터나 거대한 클라우드 서버로 옮겨도 토씨 하나 안 틀리고 똑같이 작동해요.
무거운 가상머신보다 훨씬 가볍고 빨라요
도커가 나오기 전에는 다른 실행 환경을 만들기 위해 '가상머신(Virtual Machine)'이라는 기술을 썼어요. 하지만 가상머신은 컴퓨터 안에 또 하나의 컴퓨터를 통째로 설치하는 방식이라 용량도 수십 기가바이트를 차지하고 켜지는 데도 몇 분씩 걸렸어요.
반면 도커 컨테이너는 컴퓨터의 두뇌 역할을 하는 운영체제의 중심(커널)을 원래 컴퓨터와 함께 공유해요. 오직 프로그램을 실행하는 데 꼭 필요한 최소한의 격리 공간만 새로 만들어요.
비유하자면 가상머신이 사람마다 집을 한 채씩 새로 지어주는 것이라면, 도커는 하나의 튼튼한 아파트 안에서 각자 독립된 방을 나누어 쓰는 방식이에요. 운영체제를 통째로 중복 설치하지 않기 때문에 프로그램이 1초 만에 번개처럼 켜지고 컴퓨터 메모리도 훨씬 적게 써요.
조금 더 정확히 말하면: 이미지와 컨테이너
도커를 다룰 때 가장 기본이 되는 두 가지 핵심 개념은 바로 '이미지'와 '컨테이너'예요.
이미지(Image)는 붕어빵을 찍어내는 틀이나 완성된 요리 레시피예요. 프로그램 코드, 실행 명령어, 필요한 도구들이 절대 바뀌지 않는 안전한 상태로 굳어 있는 '실행 설계도' 파일이에요.
이 이미지에 실행 명령을 내려 실제로 컴퓨터 메모리 위에서 살아 움직이게 만든 것을 '컨테이너(Container)'라고 불러요. 완성된 설계도(이미지)가 하나만 있다면 똑같은 환경의 컨테이너를 수십, 수백 개라도 클릭 한 번으로 순식간에 복제해서 띄울 수 있어요. 서비스 이용자가 갑자기 폭발해도 서버를 손쉽게 늘릴 수 있는 비결이에요.
🤔 흔한 오해
도커는 컴퓨터 안에 윈도우나 리눅스를 통째로 새로 설치하는 가상머신(VM)과 똑같은 것이다.
가상머신은 운영체제 전체를 가상으로 깔아서 무겁지만, 도커는 기존 운영체제의 핵심(커널)을 공유하며 프로그램 실행 공간만 가볍게 분리해서 써요.
🧺 일상에서 만나요
프로그램과 환경 설정을 표준 상자에 담아 어디서든 가볍고 똑같이 실행시키는 도구예요.