Docker가 무엇인지, 왜 쓰는지를 비개발자도 이해할 수 있게 풀어쓴 입문 가이드입니다. 컨테이너와 이미지의 차이, 가상머신과의 비교, 첫 실행까지 5분 안에 감을 잡을 수 있도록 구성했습니다.

Docker 입문을 검색해보면 죄다 "컨테이너 가상화 기술이며…" 같은 문장으로 시작합니다. 처음 보는 사람 입장에서는 그 한 줄부터 막힙니다. 저도 처음 Docker를 접했을 때 공식 문서를 읽다가 "이게 도대체 가상머신이랑 뭐가 다르다는 거지?" 하고 한참 헤맸거든요. 이 글은 코드를 한 줄도 안 써본 분도 5분 안에 "아, Docker가 이런 거구나" 하고 감을 잡을 수 있게 쓴 글입니다. 어려운 용어는 등장할 때마다 풀어 설명하겠습니다.
Docker가 뭐길래 다들 쓰는 걸까
Docker는 프로그램과 그 프로그램이 돌아가는 데 필요한 모든 것을 하나의 상자에 담아 어디서든 똑같이 실행할 수 있게 해주는 도구입니다. 이 상자를 컨테이너(container)라고 부릅니다.
조금 더 쉽게 비유하면 이렇습니다. 이사를 갈 때 그릇, 옷, 책을 따로 들고 가면 깨지거나 빠뜨리기 쉽잖아요. 그래서 종이박스에 종류별로 잘 포장해서 옮깁니다. Docker도 똑같습니다. 어떤 프로그램(예: 블로그 서버)을 돌리려면 운영체제 설정, 라이브러리, 버전 같은 것들이 정확히 맞아야 하는데, 이걸 하나하나 맞추다 보면 "내 컴퓨터에선 잘 됐는데 다른 컴퓨터에선 안 돌아가요" 사태가 자주 생깁니다. Docker는 이 모든 걸 박스 하나에 포장해두는 셈입니다.
💡 개발자 사이에서 유명한 농담 한 줄: "내 컴퓨터에선 됐는데요(It works on my machine)." Docker는 바로 이 문제를 없애려고 만들어졌습니다.
가상머신과 Docker, 뭐가 다른가
가장 헷갈리는 부분입니다. 둘 다 "내 컴퓨터 안에 또 다른 환경을 만든다"는 점은 비슷하지만, 무게가 완전히 다릅니다.
| 항목 | 가상머신(VM) | Docker 컨테이너 |
|---|---|---|
| 운영체제(OS) | 통째로 별도 설치 | 호스트 OS 공유 |
| 시작 속도 | 1~2분 | 보통 1~3초 |
| 용량 | 수 GB~수십 GB | 수십 MB~수백 MB |
| 자원 사용 | 무거움 | 가벼움 |
| 격리 수준 | 매우 강함 | 충분히 강함 |
가상머신은 "내 노트북 안에 또 하나의 노트북을 통째로 띄우는" 방식입니다. Windows 안에 Ubuntu를 깔거나, Mac 안에 Windows를 띄우는 식이죠. 무거운 대신 격리가 강합니다.
Docker는 "노트북은 그대로 쓰되, 프로그램별로 깔끔한 작업 공간만 분리하는" 방식입니다. 운영체제까지 통째로 복제하지 않고 핵심 부분만 공유하기 때문에 가볍고 빠릅니다. 그래서 컴퓨터 한 대에서 컨테이너 수십 개를 동시에 띄우는 일도 흔합니다.
[ 가상머신 ] [ Docker 컨테이너 ]
앱 A 앱 B 앱 A 앱 B 앱 C
| | | | |
OS A OS B ┌─────────────────┐
| | │ Docker Engine │
┌─────────────┐ └─────────────────┘
│ Hypervisor │ |
└─────────────┘ 호스트 운영체제
| |
호스트 운영체제 하드웨어
|
하드웨어
이미지와 컨테이너, 헷갈리지 말 것
Docker를 처음 쓸 때 가장 많이 혼동하는 두 단어입니다. 한 줄로 정리하면 이렇습니다.
- 이미지(image): 프로그램 + 실행 환경을 통째로 묶어둔 설계도 또는 붕어빵 틀
- 컨테이너(container): 그 설계도로 실제 찍어낸 붕어빵, 즉 실행 중인 인스턴스
이미지 하나로 컨테이너를 여러 개 만들 수 있습니다. 예를 들어 "Nginx 웹서버 이미지" 하나만 받아두면, 컨테이너를 3개 띄워서 서로 다른 웹사이트 3개를 동시에 돌리는 식으로 쓸 수 있죠.
이미지는 보통 Docker Hub라는 공식 저장소에서 받아옵니다. 일종의 앱스토어라고 보시면 됩니다. 글 작성 시점 기준으로 Docker Hub에는 수백만 개의 공식·커뮤니티 이미지가 올라와 있어, 데이터베이스든 워드프레스든 거의 다 명령어 한 줄로 받아올 수 있습니다.
어떤 사람이 Docker를 쓰면 좋은가
"개발자 도구 아닌가요?" 하실 수 있는데, 사실 비개발자도 충분히 쓸 일이 생깁니다. 몇 가지 시나리오를 들어볼게요.
- 블로그·홈페이지를 직접 띄우고 싶은 분: 워드프레스 + 데이터베이스를 명령어 한두 줄로 깔끔하게 띄울 수 있습니다. 전통적인 설치 방식보다 시행착오가 훨씬 적습니다.
- AI 도구를 로컬에서 돌려보고 싶은 분: Stable Diffusion이나 오픈소스 LLM 같은 도구를 설치할 때, 의존성 충돌 없이 컨테이너 하나로 깔끔하게 실행할 수 있습니다.
- 여러 프로그램을 깔았다 지웠다 하기 귀찮은 분: 컨테이너는 삭제하면 시스템에 흔적이 거의 안 남습니다. 내 컴퓨터가 지저분해질 걱정이 줄어듭니다.
저도 처음에 Docker를 본격적으로 쓴 계기는 "노트북에 Postgres(데이터베이스 프로그램)를 깔았다 지웠다 하기 너무 귀찮다"였습니다. 컨테이너로 바꾸고 나서는 필요할 때만 띄우고, 안 쓰면 끄고, 정말 편해졌습니다.
설치부터 첫 실행까지, 큰 그림만 잡기
이 글은 입문 개념편이라 자세한 설치 가이드는 다음 글로 미루겠습니다. 다만 큰 그림은 알고 계시면 좋습니다.
1단계: Docker Desktop 설치
↓ (Windows / Mac / Linux 모두 공식 설치 파일 제공)
2단계: 터미널 열기
↓ (터미널 = 컴퓨터에 명령어로 지시하는 창)
3단계: docker run 명령어 실행
↓ (이미지 자동 다운로드 → 컨테이너 자동 실행)
4단계: 브라우저로 결과 확인
가장 자주 보게 될 명령어 몇 개만 미리 소개합니다.
docker pull <이미지이름> # 이미지 받아오기
docker run <이미지이름> # 컨테이너 만들고 실행
docker ps # 지금 돌고 있는 컨테이너 목록
docker stop <컨테이너ID> # 컨테이너 멈추기
docker rm <컨테이너ID> # 컨테이너 삭제
docker run hello-world 한 줄이 보통의 첫 실습입니다. 이 명령은 "hello-world라는 테스트용 이미지를 받아와 컨테이너로 띄워보세요"라는 뜻입니다. 잘 동작하면 "Hello from Docker!" 같은 메시지가 터미널에 출력됩니다.
💡 Docker Desktop은 개인·소규모 사용 한정으로 무료입니다. 일정 규모 이상의 기업에서는 유료 라이선스가 필요할 수 있으니 공식 페이지에서 최신 약관을 확인하세요(글 작성 시점 기준).
입문자가 자주 헷갈리는 부분
처음 며칠 Docker를 만지다 보면 거의 다 똑같은 데서 막힙니다. 미리 알고 가면 시간을 아낄 수 있습니다.
1. "컨테이너를 껐는데 데이터가 다 사라졌어요." 컨테이너는 기본적으로 휘발성입니다. 안에 저장한 파일은 컨테이너를 지우면 같이 사라집니다. 데이터를 보존하려면 볼륨(volume) 이라는 별도의 저장 공간을 연결해야 합니다. 처음엔 그냥 "데이터 보관하려면 볼륨이 필요하구나" 정도만 기억해두세요.
2. "이미지랑 컨테이너 차이가 매번 헷갈려요." 앞서 비유한 붕어빵 틀(이미지)과 붕어빵(컨테이너)을 떠올리면 됩니다. docker images는 틀 목록, docker ps는 지금 구워지는 중인 붕어빵 목록입니다.
3. "포트가 뭔가요?" 컨테이너 안에서 돌아가는 웹서버를 내 브라우저로 열려면 "통로"를 뚫어줘야 합니다. 그 통로 번호가 포트입니다. docker run -p 8080:80 같은 식으로 "내 컴퓨터 8080번 → 컨테이너 80번"으로 연결한다고 알려줘야 합니다. 이걸 안 하면 컨테이너는 잘 돌아도 브라우저에선 아무것도 안 보입니다.
4. "Docker Desktop이 너무 무거워요." Mac이나 Windows에서 Docker Desktop을 실행하면 내부적으로 작은 가상머신을 띄우기 때문에 메모리를 꽤 씁니다. 노트북 사양이 빠듯하면 설정에서 메모리 할당량을 줄이거나, Linux 환경(WSL 등)에서 Docker Engine만 쓰는 방법도 있습니다.
마무리
Docker는 처음엔 용어 두세 개에서 막히지만, "프로그램을 박스에 담아 어디서든 똑같이 돌리는 도구"라는 큰 그림만 잡고 나면 의외로 빠르게 익숙해집니다. 이미지와 컨테이너, 가상머신과의 차이, 그리고 docker run 한 줄. 오늘은 이 정도만 챙겨가셔도 충분합니다.
다음 단계로는 본인 운영체제에 Docker Desktop을 설치하고 docker run hello-world를 직접 쳐보는 걸 추천합니다. 5분이면 끝납니다. 그다음에 워드프레스나 관심 있는 오픈소스 도구를 컨테이너로 띄워보면, 글로 읽은 개념이 한 번에 머리에 박힙니다. 직접 타이핑해보는 게 가장 빠른 입문법입니다.
'개발 & 기술 > DevOps·인프라' 카테고리의 다른 글
| 우분투 14.04 설치 후 사용하지 않는 프로그램을 제거 (0) | 2015.10.14 |
|---|---|
| 패키지 삭제후 dpkg -l 리스트가 왜 남아있나요?? (0) | 2015.09.10 |
| 우분투 14.04 오른쪽 한영키 알트키 인식 문제 (0) | 2015.08.17 |
| 우분투 eth 번호 확인, 설정 (1) | 2015.01.14 |
| 우분투 프로그램 자동실행 (0) | 2015.01.12 |