처음에 "서버를 띄운다"는 말을 들었을 때, 머릿속엔 이런 생각이 떠올랐어요.
"서버...? 그거 마인크래프트 같은 데서 돌아가는 뭔가 대단한 시스템 아닌가요?"
사실 개념만 놓고 보면 서버는 그냥 요청을 받고, 응답을 주는 프로그램이래요.
예를 들어, 웹 브라우저에서 naver.com에 접속하면 네이버의 서버가 내 요청을 받고, 거기에 맞는 웹페이지를 응답해주는 거죠.
조금 더 간단한 예를 들어볼까요?
- 제가 만든 Python Flask 웹앱도, 누군가 웹 브라우저로 접속하면
- 그 요청을 받아서 "Hello, world!" 같은 응답을 보내주는 서버가 됩니다.
즉, 서버는 "남의 요청을 듣고 응답하는 프로그램"이고, 이걸 어디서 실행하느냐에 따라 의미가 달라져요.
🐳 도커로 서버를 띄운다!
- 서버 = 요청을 받고 응답하는 프로그램
- 도커 = 프로그램을 어디서든 동일하게 실행하게 해주는 도구
즉, 서버를 도커 컨테이너 안에서 실행시키는 것, 그게 바로
"도커로 서버를 띄운다"는 말이었던 거죠.
예시 들어보기
☝️ 상황 가정: 한 대의 서버, 여러 개의 서비스
회사의 예산이 넉넉하지 않아서 서버를 막 여러 대 쓰기 어려운 상황이라고 가정해볼게요.
- 한 대의 물리 서버(컴퓨터)에
- 웹 서버 (예: Apache, Nginx)
- 메일 서버 (예: Postfix)
- 시스템 관리 툴
- 데이터베이스 서버 (예: MySQL)
...이 모든 걸 한꺼번에 올려야 한다면?
------------------------------------------------------------------------------------------------------------
🧱 도커 없이 이걸 하려고 하면?
전통적인 방식이라면, 운영체제 하나 안에 모든 서버 프로그램을 설치해야 합니다.
그럼 어떤 문제가 생길까요?
- 환경 충돌
웹 서버 A 프로젝트 개발자가 설정을 바꾸다 보면, B 프로젝트에 영향을 줄 수도 있어요.
예를 들어 같은 포트를 쓰면 충돌하고, 설정이 꼬이면 전체가 멈출 수도 있죠. - 제한적인 실행 개수
웹 서버(Apache 등)는 보통 운영체제당 하나만 설치해서 돌리는 게 기본입니다.
한 대의 서버에서 여러 개의 웹 서버를 돌리기는 거의 불가능에 가까워요. - 보안 이슈
서로 영향을 주지 않아야 할 서비스들이 하나의 운영체제 안에 섞여 있다 보니,
하나의 서비스에 문제가 생기면 전체가 흔들릴 수 있습니다.
------------------------------------------------------------------------------------------------------------
🐳 그런데 도커를 쓰면?
컨테이너는 각각 완전히 격리된 환경을 제공합니다.
따라서 같은 서버 안에서 아래처럼 실행할 수 있어요:
- 하나의 웹 서버 컨테이너
- 하나의 메일 서버 컨테이너
- 하나의 DB 서버 컨테이너
- 필요하면 웹 서버를 2개, 3개도 따로따로 컨테이너로 실행!
✅ 이점 정리:
- 독립성: A 프로젝트용 웹 서버와 B 프로젝트용 웹 서버를 완전히 분리된 컨테이너로 올릴 수 있어요.
- 확장성: 컨테이너 하나를 복제해서 같은 웹 서버를 여러 개 띄우는 것도 쉬워요.
- 안정성: 하나를 업데이트해도, 다른 컨테이너에는 전혀 영향을 주지 않아요.
- 비용 절감: 물리 서버 여러 대 없이도 여러 서비스를 동시에 운용할 수 있어요.
복습!
1️⃣ 서버란 무엇인가요?
- 클라이언트의 요청(request)을 받고, 그에 대한 응답(response)을 해주는 프로그램 혹은 시스템이다.
2️⃣ 도커(Docker)는 무엇인가요?
- 데이터나 프로그램을 서로 격리된 환경에서 실행할 수 있게 해주는 소프트웨어이다.
3️⃣ 왜 도커를 사용하면 한 대의 서버에 여러 개의 웹 서버를 띄울 수 있나요?
- 컨테이너는 서로 격리된 환경을 제공하기 때문에, 같은 서버 안에서도 서로 다른 웹 서버를 포트, 설정, 라이브러리 충돌 없이 동시에 실행할 수 있다.
4️⃣ 도커를 사용하지 않고 한 대의 서버에 두개의 웹 서버를 실행하면 어떤 문제가 생길 수 있을까요?
- 포트 충돌: 대부분 웹 서버는 기본적으로 80번 포트를 사용하므로 동시에 실행할 수 없음.
- 환경 설정 충돌: 예를 들어 프로젝트 A는 PHP 7을, B는 PHP 8을 필요로 하면 충돌 가능.
- 운영상 위험: 한 프로젝트의 설정 변경이나 패키지 설치가 다른 프로젝트에 영향을 줄 수 있음.
5️⃣ 도커를 사용하면 비용 절감에 어떤 도움이 되나요?
- 도커 없이: 웹 서버 1개당 서버 1대 필요 → 서버 수 늘어남 → 비용 증가
- 도커 사용: 한 서버에 여러 웹 서버를 격리해서 실행 가능 → 서버 수 줄어듦 → 비용 절감
'개인 공부 > Docker' 카테고리의 다른 글
도커(Docker)는 어떻게 동작할까? (0) | 2025.05.15 |
---|---|
도커(Docker)란 무엇인가? (0) | 2025.05.12 |