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