테마
00 — 빈 PC에서 시작하기
🗓️ 3월 2일 (토) 오전 · 회사에서 받은 노트북. 오라클은커녕 Git도 없다. 이 문서를 마치면
docker version으로 버전 번호가 나오고, 이 저장소가 내 PC에 들어와 있다. 그게 전부다. 오라클은 다음 문서에서 올린다.Docker Desktop이 이미 돌아가는 PC라면 이 문서를 건너뛰고
01_첫_고객사_ora-hanorder.md로 간다.
0. 준비물
| 항목 | 요구 | 왜 |
|---|---|---|
| OS | Windows 10 64-bit (21H2 이상) 또는 Windows 11 | Docker Desktop의 WSL2 백엔드 요건. macOS·Linux는 Docker만 깔면 그다음은 같다 |
| 메모리 | 8GB 이상 | 오라클 컨테이너 한 대가 1~1.5GB를 쓰고, 2대를 동시에 켜는 화(03·04·12)가 있다 |
| 디스크 여유 | L1만: 10GB / 4대 전부: 40GB | 이미지 2.9GB + ora-hanorder 볼륨 + (나중에) ora-burger 11.5GB |
| 권한 | 관리자 계정 | WSL2 설치와 Docker Desktop 설치에 필요 |
| 가상화 | BIOS/UEFI에서 활성 | 작업 관리자 → 성능 → CPU에서 "가상화: 사용"이면 OK. "사용 안 함"이면 BIOS에서 켠다(Intel VT-x / AMD-V) |
1. Git for Windows — 저장소를 받고, Git Bash를 얻는다
- https://git-scm.com/download/win에서 64-bit 설치 파일을 받는다.
- 설치 옵션은 전부 기본값으로 두고 Next를 누른다(에디터 선택도 그대로 둔다).
- 새 PowerShell 창을 열어 확인한다.
powershell
git --version정상 출력 (이 문서를 쓴 PC에서 실측)
git version 2.55.0.windows.5버전 번호가 나오면 된다.
💡 Git Bash가 같이 설치된다. 이 교재의
bash코드 블록은 Git Bash 기준이고,powershell블록은 PowerShell 기준이다. 어느 쪽을 써도 되지만 한 문서 안에서는 하나만 쓴다. 셸을 오가면 heredoc과 인코딩 규칙이 달라서 엉킨다. 처음이라면 Git Bash를 권한다. PowerShell을 고른다면 창을 열 때마다$OutputEncoding = New-Object System.Text.UTF8Encoding $false부터 입력한다. 그러지 않으면 파이프로 넘긴 한글이?로 저장된다(02_접속과_실행_방법.md§4).
2. WSL2 — Docker가 올라탈 리눅스 커널
Windows의 Docker Desktop은 WSL2 위에서 돈다. 그래서 WSL2부터 있어야 한다.
관리자 권한 PowerShell(시작 → "PowerShell" 우클릭 → 관리자 권한으로 실행)에서 실행한다.
powershell
wsl --install --no-distribution끝나면 재부팅한다. 리눅스 배포판은 따로 설치하지 않아도 된다. Docker Desktop이 자체 배포판을 가져온다.
재부팅한 뒤 확인한다.
powershell
wsl --status정상 출력: 아래처럼 버전 정보가 나오면 된다.
기본 버전: 2🐞 실제로 난 오류 —
wsl -l -v가 깨진 문자열과 함께Wsl/CallMsi/Install/REGDB_E_CLASSNOTREG를 뱉는다 이 문서를 쓴 새 PC에서 실제로 난 오류다. WSL 구성 요소가 설치되지 않았거나 등록이 깨진 상태다. 조치: 관리자 PowerShell에서
wsl --install --no-distribution→ 재부팅 순서로 진행한다. 그래도 같으면wsl --update를 실행한 뒤 다시 재부팅한다. 그래도 안 되면 "Windows 기능 켜기/끄기"에서 Virtual Machine Platform과 Linux용 Windows 하위 시스템 두 항목이 체크돼 있는지 본다.
3. Docker Desktop — 컨테이너를 돌리는 엔진
- https://www.docker.com/products/docker-desktop/에서 Windows (x86_64) 설치 파일을 받는다.
- 설치 화면에서 "Use WSL 2 instead of Hyper-V"가 체크돼 있는지 확인하고 설치한다. 설치가 끝나면 로그아웃이나 재부팅을 요구할 수 있다.
- 시작 메뉴에서 Docker Desktop을 실행한다. 약관에 동의한 다음 나오는 계정 로그인은 건너뛰어도 된다(Skip / Continue without signing in).
- 작업 표시줄의 고래 아이콘이 움직임을 멈출 때까지 기다린다(1~2분). "Engine running"이 보이면 준비가 끝난 것이다.
- Git Bash나 PowerShell에서 확인한다.
bash
docker version --format '{{.Server.Version}}'정상 출력 (2026-09-01 실측)
29.5.3버전 번호가 나오면 된다. 번호가 달라도 상관없다.
실패 증상
failed to connect to the docker API at npipe:////./pipe/dockerDesktopLinuxEngine; ... The system cannot find the file specified.Docker Desktop이 떠 있지 않다. 설치만 하고 실행하지 않았거나 아직 기동 중인 경우다. 고래 아이콘이 멈출 때까지 기다렸다가 다시 실행한다. 이 메시지는 앞으로도 PC를 켤 때마다 만날 수 있다. Docker Desktop은 직접 실행해야 하기 때문이다(설정에서 "Start Docker Desktop when you sign in"을 켜면 로그인할 때 자동으로 뜬다).
3-1. 메모리 배분 (선택, 8GB PC면 권장)
WSL2는 기본적으로 PC 메모리의 절반까지 가져간다. 컨테이너 2대를 동시에 켜려면 메모리를 넉넉히 잡아 준다. C:\Users\<사용자>\.wslconfig 파일에 다음 내용을 적는다(파일이 없으면 새로 만든다).
ini
[wsl2]
memory=8GB저장한 뒤 wsl --shutdown을 실행하고 Docker Desktop을 다시 시작한다.
8GB PC라면
memory=5GB정도로 두고 컨테이너는 한 번에 한 대만 켠다. 그래도 01~13화는 문제없이 따라갈 수 있다.
4. 저장소 클론 — 이 교재를 내 PC로
bash
cd ~ # 아무 작업 폴더나 좋다. 경로에 한글·공백이 없는 곳이 편하다
git clone https://github.com/voidmain443/SQL_in_deep.git
cd SQL_in_deep
ls정상 출력
10_본편_튜너의_1년/ 1_시험준비_SQLP합격/ 2_중급실전_딥다이브/ 3_심화_성능고도화/ 40_보고서와_표준/ README.md ...폴더 이름은 바꿔도 된다. 이 교재에 나오는 경로는 모두 저장소 루트 기준 상대경로다.
저장소에 없는 것 — 미리 알아 둔다
| 없는 것 | 왜 | 어떻게 |
|---|---|---|
00_자료준비/원서_PDF/의 책 9권 | 저작권 | 각자 구매한 소장본을 쓴다. 어떤 책이 필수인지는 06_원서와_공식문서_지도.md 참고 |
00_자료준비/OCR_원천/의 추출 텍스트 | 저작물 텍스트 | 소장본에서 직접 추출한다(스크립트는 들어 있다) |
ora-dist용 CSV 18개 | 크기 (~97MB) | 압축본 data_csv.zip은 들어 있다. 03화 전에 압축을 푼다 → 고객사/L3_ora-dist/ |
ora-newshop용 이커머스 CSV | 생성물 | 18화 직전에 Python으로 생성한다 → 고객사/L4_ora-newshop/ |
01~13화에는 이 넷 중 아무것도 필요 없다. 한빛유통 데이터는 스크립트가 만든다.
5. (선택) 클라이언트 도구 — 없어도 된다
오라클에 접속하는 sqlplus는 컨테이너 안에 있다. 내 PC에 오라클 클라이언트를 깔지 않아도 docker exec로 빌려 쓰면 된다. 구조를 GUI 화면에서 그림으로 보고 싶을 때는 SQL Developer를, 내 PC에 CLI를 두고 싶을 때는 SQLcl을 나중에 설치한다(02_접속과_실행_방법.md).
6. 확인 — 여기까지 됐으면 다음 문서로
- [ ]
git --version→ 버전 번호 - [ ]
wsl --status→ "기본 버전: 2" - [ ]
docker version --format '{{.Server.Version}}'→ 버전 번호 - [ ] 저장소 폴더 안에
10_본편_튜너의_1년/이 보인다
다 됐으면 01_첫_고객사_ora-hanorder.md 문서로 넘어간다. 3분이면 첫 고객사가 올라간다.