# WSL · Ubuntu · Docker 이해하기 (초보자용 가이드) ## 문서 정보 | 항목 | 내용 | | ---- | -------------------------- | | 문서명 | WSL · Ubuntu · Docker 이해하기 | | 대상 | 개발 입문자, 신규 팀원 | | 작성목적 | Baron SSO 개발환경 이해 | | 작성일 | 2026-06-12 | --- # 1. 개요 현재 Baron SSO 개발환경은 다음과 같은 구조로 구성되어 있습니다. ```text Windows ↓ WSL ↓ Ubuntu ↓ Docker ↓ Baron 서비스들 ``` 처음 접하는 사람은 용어가 많아 어렵게 느껴질 수 있지만, 사실은 다음과 같이 이해하면 쉽습니다. | 구성요소 | 비유 | | -------------- | ---------- | | Windows | 집 | | WSL | 집 안의 리눅스 방 | | Ubuntu | 방에 사는 사람 | | Docker | 작업실 | | Container | 개별 작업실 | | Baron Backend | 백엔드 작업실 | | Baron Frontend | 프론트엔드 작업실 | | ClickHouse | 데이터 저장 작업실 | --- # 2. 전체 구조 이해하기 ## 실제 개발환경 구조 ```text ┌─────────────────────────┐ │ Windows 11 │ │ │ │ VS Code │ │ Chrome │ │ Git │ └──────────┬──────────────┘ │ ▼ ┌─────────────────────────┐ │ WSL │ │ (Windows Linux Layer) │ └──────────┬──────────────┘ │ ▼ ┌─────────────────────────┐ │ Ubuntu │ │ (Linux) │ └──────────┬──────────────┘ │ ▼ ┌─────────────────────────┐ │ Docker │ └──────────┬──────────────┘ │ ▼ ┌─────────┼─────────┬─────────┐ ▼ ▼ ▼ ▼ Backend UserFront AdminFront ClickHouse ``` --- # 3. Windows란? 현재 우리가 사용하는 기본 운영체제(OS)입니다. 예) ```text C:\Users D:\Project E:\Workspace ``` Windows 환경에서 사용하는 경로입니다. 주요 프로그램 * VS Code * Chrome * Edge * Explorer * Git GUI 등이 Windows 위에서 실행됩니다. --- # 4. WSL이란? ## WSL Windows Subsystem for Linux 즉, "Windows 안에서 Linux를 실행할 수 있게 해주는 기능" 입니다. --- ## WSL이 없던 시절 Linux를 사용하려면 ```text PC ├─ Windows └─ Virtual Machine └─ Ubuntu ``` 구조를 사용했습니다. 문제점 * 느림 * 무거움 * 메모리 많이 사용 --- ## WSL 사용 ```text PC ├─ Windows └─ WSL └─ Ubuntu ``` 장점 * 빠름 * 가벼움 * 실제 Linux와 거의 동일 --- # 5. Ubuntu란? Ubuntu는 Linux 운영체제입니다. Windows와 같은 OS입니다. 비교하면 | Windows | Linux | | ---------- | -------- | | Windows 11 | Ubuntu | | 탐색기 | Shell | | CMD | Terminal | | PowerShell | Bash | --- Ubuntu 접속 예시 ```bash wsl ``` 또는 ```bash ubuntu ``` 실행 후 ```bash ubuntu@DESKTOP-XXXX:~$ ``` 가 보이면 Ubuntu 안에 들어온 상태입니다. --- # 6. Docker란? Docker는 "프로그램을 독립적으로 실행하는 기술" 입니다. --- 예를 들어 Baron 프로젝트에 필요한 것 ```text NodeJS Database Backend Frontend ClickHouse ``` 를 직접 설치하면 PC가 복잡해집니다. --- Docker 사용 시 ```text ┌────────────┐ │ Backend │ └────────────┘ ┌────────────┐ │ Frontend │ └────────────┘ ┌────────────┐ │ Database │ └────────────┘ ┌────────────┐ │ ClickHouse │ └────────────┘ ``` 각각 독립적으로 실행됩니다. --- # 7. Container란? Docker 안에서 실행되는 작은 서버입니다. 쉽게 말하면 "미니 컴퓨터" 라고 생각하면 됩니다. --- 현재 Baron 환경 예시 ```text Container 1 baron_backend Container 2 baron_userfront Container 3 baron_adminfront Container 4 baron_clickhouse ``` 각 컨테이너는 * 독립 실행 * 독립 설정 * 독립 포트 를 가집니다. --- # 8. Image와 Container 차이 많이 헷갈리는 부분입니다. ## Image 설치 파일 예) ```text Windows 설치 ISO ``` 와 비슷 --- ## Container 실행 중인 프로그램 예) ```text 설치 완료 후 실행된 Windows ``` 와 비슷 --- 관계 ```text Docker Image ↓ 실행 ↓ Container ``` --- # 9. 실제 Baron 프로젝트 구조 현재 개발환경 ```text Windows │ ├─ VS Code │ ├─ Git │ └─ E:\h_workspace\baron-sso ``` --- WSL에서 보면 ```text /mnt/e/h_workspace/baron-sso ``` 가 됩니다. --- 같은 폴더를 Windows와 Ubuntu가 다르게 표현하는 것입니다. | Windows | Ubuntu | | ------------------------ | ---------------------------- | | E:\h_workspace\baron-sso | /mnt/e/h_workspace/baron-sso | --- # 10. VS Code는 어디서 실행되는가? VS Code 자체는 Windows에서 실행됩니다. ```text Windows └─ VS Code ``` 하지만 Remote WSL 기능을 사용하면 ```text VS Code ↓ WSL ↓ Ubuntu ``` 에 연결됩니다. --- 좌측 하단에 ```text WSL: Ubuntu ``` 가 보이면 Ubuntu 내부를 편집 중인 상태입니다. --- # 11. Docker Compose란? 여러 컨테이너를 한 번에 실행하는 기능입니다. 예) docker-compose.yml ```yaml services: backend: ... userfront: ... adminfront: ... clickhouse: ... ``` --- 실행 ```bash docker compose up -d ``` --- Docker가 자동으로 ```text Backend 시작 UserFront 시작 AdminFront 시작 ClickHouse 시작 ``` 을 수행합니다. --- # 12. Baron SSO 실행 흐름 ```text 개발자 │ ▼ VS Code 수정 │ ▼ Git 저장 │ ▼ Docker Compose 실행 │ ▼ Backend Container UserFront Container AdminFront Container ClickHouse Container │ ▼ 웹 브라우저 접속 ``` --- # 13. 자주 사용하는 명령어 ## 현재 컨테이너 보기 ```bash docker ps ``` --- ## 전체 컨테이너 보기 ```bash docker ps -a ``` --- ## 로그 보기 ```bash docker logs 컨테이너명 ``` 예) ```bash docker logs baron_backend ``` --- ## 컨테이너 접속 ```bash docker exec -it 컨테이너명 bash ``` 예) ```bash docker exec -it baron_backend bash ``` --- ## 컨테이너 중지 ```bash docker stop 컨테이너명 ``` --- ## 컨테이너 재시작 ```bash docker restart 컨테이너명 ``` --- # 14. 최종 정리 ## 한 문장 설명 ### Windows 사용자가 사용하는 실제 운영체제 --- ### WSL Windows 안에서 Linux를 사용할 수 있게 해주는 기능 --- ### Ubuntu WSL 안에서 실행되는 Linux 운영체제 --- ### Docker 프로그램을 독립된 환경에서 실행하는 기술 --- ### Container Docker 안에서 실행되는 개별 서비스 --- ## Baron SSO 전체 구조 ```text 사용자 │ ▼ Windows │ VS Code │ WSL │ Ubuntu │ Docker │ ├─ baron_backend ├─ baron_userfront ├─ baron_adminfront └─ baron_clickhouse │ 브라우저 접속 ``` --- ## 기억해야 할 핵심 "Windows 위에서 WSL이 동작하고, WSL 안에서 Ubuntu가 실행되며, Ubuntu 안에서 Docker가 실행되고, Docker 안에서 Baron 서비스들이 실행된다."