Docker 입문: 컨테이너와 가상머신 차이 완벽 이해하기 | 1일차
1일차: Docker 소개 및 컨테이너와 가상머신 차이 이해하기
안녕하세요, mj입니다. 오늘은 Docker가 무엇인지, 그리고 컨테이너와 가상머신(가상화 기술)의 차이를 쉽게 이해할 수 있도록 설명해보려고 합니다. 개발자뿐 아니라 IT에 관심있는 분들께도 도움이 되길 바랍니다.
Docker란 무엇인가?
Docker는 애플리케이션을 격리된 환경에서 실행할 수 있도록 도와주는 플랫폼입니다. 쉽게 말해, 소프트웨어를 '컨테이너'라는 작은 박스 안에 담아 어디서든 동일하게 실행할 수 있게 해줍니다. 이런 방식 덕분에 개발 환경과 운영 환경 간 차이로 인한 문제를 크게 줄일 수 있습니다.
기존에는 가상머신(VM)을 사용해 비슷한 문제를 해결했지만, Docker 컨테이너는 훨씬 가볍고 빠르다는 장점이 있습니다.
컨테이너와 가상머신의 차이
컨테이너와 가상머신은 모두 여러 환경을 분리해주는 기술이지만, 작동 원리와 성격이 다릅니다.
- 가상머신(VM) : 호스트 OS 위에 하이퍼바이저가 설치되고, 그 위에 각 VM마다 독립된 OS 전체를 가상화해 실행합니다. 그래서 무겁고 부팅 시간이 오래 걸립니다.
- 컨테이너 : 호스트 OS의 커널을 공유하면서 프로세스 단위로 격리합니다. OS 전체를 복제하지 않아 훨씬 가볍고 빠르게 실행됩니다.
아래 표로 비교해보겠습니다.
| 구분 | 가상머신 | 컨테이너 |
|---|---|---|
| 운영 방식 | 전체 OS 가상화 | 호스트 OS 커널 공유, 프로세스 격리 |
| 리소스 사용량 | 높음 (무거움) | 낮음 (가벼움) |
| 부팅 시간 | 수 분 | 수 초 이하 |
| 이식성 | 중간 | 매우 높음 |
| 사용 용도 | 서버 가상화, 여러 OS 테스트 | 애플리케이션 배포, 마이크로서비스 |
Docker 컨테이너 예시
간단한 예제로, Docker를 통해 'hello-world' 이미지를 실행해보겠습니다.
docker run hello-world
실행 결과:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
목적별 Docker 예시 5가지
- 웹 서버 실행 (Nginx)
docker run -d -p 8080:80 nginx웹 브라우저에서
http://localhost:8080접속 시 Nginx 기본 페이지가 뜹니다. - 데이터베이스 실행 (MySQL)
docker run -d -e MYSQL_ROOT_PASSWORD=my-secret-pw mysqlMySQL 서버가 컨테이너에서 실행됩니다.
- 개발 환경 설정 (Python)
docker run -it python:3.9 bashPython 3.9 환경에서 터미널을 사용할 수 있습니다.
- 컨테이너 상태 확인
docker ps현재 실행 중인 컨테이너 목록을 보여줍니다.
- 이미지 목록 확인
docker images로컬에 저장된 Docker 이미지 목록을 확인할 수 있습니다.
가상머신 예시 5가지
가상머신은 대표적으로 VMware, VirtualBox, Hyper-V 등이 있습니다. 아래는 가상머신 사용 예시입니다.
- 새 가상머신 생성 (VirtualBox)
GUI에서 OS 설치 ISO를 선택하고 가상머신 생성 - 가상머신 시작 및 종료
가상머신을 켜거나 끄는 작업 - 스냅샷 생성
가상머신 상태를 저장해 나중에 복원 가능 - 네트워크 설정
브리지, NAT 등 네트워크 모드 설정 - 리소스 할당 변경
CPU, 메모리 크기 조절
마무리하며
오늘은 Docker의 기본 개념과 컨테이너와 가상머신의 차이를 살펴봤습니다. Docker는 경량화된 컨테이너 기술로 빠른 배포와 높은 이식성을 제공해 현대 개발 환경에서 매우 중요합니다. 앞으로 Docker를 직접 사용하면서 더 깊게 이해해보면 좋겠습니다.
댓글
댓글 쓰기