forked from baron/baron-sso
WSL · Ubuntu · Docker 이해하기
내가 사용할 개발환경에 대한 이해를 돕기 위하여 작성
This commit is contained in:
639
docs/setup/WSL · Ubuntu · Docker 이해하기_moon
Normal file
639
docs/setup/WSL · Ubuntu · Docker 이해하기_moon
Normal file
@@ -0,0 +1,639 @@
|
||||
# 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 서비스들이 실행된다."
|
||||
Reference in New Issue
Block a user