# ๐ณ Docker ์ฌ์ฉ ๊ฐ์ด๋
## 1. ๋์ปค ๊ตฌ์ฑ ์์
### ๐ ์ฃผ์ ๊ตฌ์ฑ์์
- **Docker Client (docker-cli)**
์ฌ์ฉ์๊ฐ ํฐ๋ฏธ๋์์ ๋ช
๋ น์ด ์
๋ ฅ (์: `docker run`)
- **Docker Daemon (dockerd)**
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ, ์ปจํ
์ด๋/์ด๋ฏธ์ง ๊ด๋ฆฌ
- **containerd**
์ปจํ
์ด๋์ ์ ์ฒด ์์ ์ฃผ๊ธฐ ๊ด๋ฆฌ (์์ฑ, ์คํ, ์ค์ง, ์ญ์ )
- **runc**
์ค์ ์ปจํ
์ด๋ ์คํ ๋ด๋น
- **containerd-shim**
containerd ↔ runc ์ค๊ฐ ์ฐ๊ฒฐ์, ์คํ ์กฐ์
---
### ๐ ๋์ปค ๊ตฌ์ฑ์์ ๋ค์ด์ด๊ทธ๋จ
```mermaid
flowchart TD
A["์ฌ์ฉ์ (Docker CLI)"] --> B["Docker Daemon (dockerd)"]
B --> C["containerd (์ปจํ
์ด๋ ์์ ์ฃผ๊ธฐ ๊ด๋ฆฌ)"]
C --> D["runc (์ปจํ
์ด๋ ์คํ)"]
C --> E["containerd-shim (์ค๊ฐ์)"]
```
---
## 2. ๋์ปค ์คํ ํ๊ฒฝ
- **๋ฆฌ๋
์ค**: ๋ฐ๋ก ์ค์น ๊ฐ๋ฅ (CLI ํ๊ฒฝ ์์ฃผ)
- **์๋์ฐ / macOS**:
- Docker Desktop ํจํค์ง ์ฌ์ฉ (๋ด๋ถ์ ์ผ๋ก ๋ฆฌ๋
์ค VM ์คํ)
- ์ฌ์ฉ์๋ VM ์ ๊ฒฝ ์ ์ฐ๊ณ ์ผ๋ฐ ํ๋ก๊ทธ๋จ์ฒ๋ผ ์คํ ๊ฐ๋ฅ
---
### ๐ ๋์ปค Desktop ์๊ตฌ์ฌํญ
- **์๋์ฐ**
- Windows 10 64bit (Pro, Enterprise, Education) / Build 16299 ์ดํ
- Home ๋ฒ์ ์ WSL2 ํ์
- CPU ๊ฐ์ํ(SLAT) ์ง์, ๋ฉ๋ชจ๋ฆฌ 4GB ์ด์
- **macOS**
- 2010๋
์ดํ ๋ชจ๋ธ
- macOS 10.13 ์ดํ, ๋ฉ๋ชจ๋ฆฌ 4GB ์ด์
- **๋ฆฌ๋
์ค**
- Ubuntu 16.04 ์ดํ ๋ฑ ์ฃผ์ ๋ฐฐํฌํ ์ง์
---
## 3. ๋์ปค ๋์ ๋ฐฉ์
### ๐ ๋์ ํ๋ฆ
```mermaid
sequenceDiagram
participant U as ์ฌ์ฉ์ (docker run)
participant C as Docker Client
participant D as Docker Daemon
participant H as Docker Hub
participant N as Container
U->>C: docker run hello-world
C->>D: ๋ช
๋ น ์ ๋ฌ
D->>H: ์ด๋ฏธ์ง ์์ฒญ (hello-world)
H-->>D: ์ด๋ฏธ์ง ๋ค์ด๋ก๋
D->>N: ์ปจํ
์ด๋ ์์ฑ ๋ฐ ์คํ
N-->>U: ์คํ ๊ฒฐ๊ณผ ์ถ๋ ฅ
```
---
### ๐ฆ ์ด๋ฏธ์ง์ ์ปจํ
์ด๋
- **์ด๋ฏธ์ง(Image)**
- ํ๋ก๊ทธ๋จ + ๋ผ์ด๋ธ๋ฌ๋ฆฌ + ์ค์ ์ ๋ฌถ์ ํจํค์ง
- "๋นตํ" ๊ฐ์ ์ญํ
- ์ฌ๋ฌ ๊ฐ์ "๋ ์ด์ด(Layer)"๋ก ๊ตฌ์ฑ
- **์ปจํ
์ด๋(Container)**
- ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ธ์คํด์ค
- ์คํ/์ค์ง/์ญ์ ๊ฐ๋ฅ
- ๋
๋ฆฝ๋ ํ์ผ ์์คํ
๊ณผ ํ๊ฒฝ์ ๊ฐ์ง
---
## 4. ๋์ปค ์ฒซ ์คํ (Hello World)
### ๐ ๋ช
๋ น์ด
`# ๋์ปค "hello-world" ์ปจํ
์ด๋ ์คํ docker run hello-world`
### ๐ ํ ์ค์ฉ ์ค๋ช
- `docker` → ๋์ปค ๋ช
๋ น์ด ์คํ
- `run` → ์๋ก์ด ์ปจํ
์ด๋๋ฅผ ์คํํ๊ฒ ๋ค๋ ์๋ฏธ
- `hello-world` → Docker Hub์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ํ
์คํธ ์ด๋ฏธ์ง
---
### โก ์คํ ๊ณผ์
1. ์ฌ์ฉ์๊ฐ `docker run hello-world` ์
๋ ฅ
2. Docker Client → Docker Daemon์ ๋ช
๋ น ์ ๋ฌ
3. Daemon์ด Docker Hub์์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋
4. Daemon์ด ์ปจํ
์ด๋ ์์ฑ ๋ฐ ์คํ
5. ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์ ํฐ๋ฏธ๋์ ์ถ๋ ฅ
---
## 5. ์ปจํ
์ด๋๊ฐ ๊ฐ๋ฒผ์ด ์ด์
- ์ด์์ฒด์ ๋ฅผ ํ๋์ฉ ํฌํจํ๋ VM๊ณผ ๋ฌ๋ฆฌ,
**ํธ์คํธ OS ์ปค๋์ ๊ณต์ **ํด์ ๋ถํ์ํ ๋ฆฌ์์ค ์ฌ์ฉ์ด ์์.
- ๋ฐ๋ผ์ ์คํ ์๋๋ ๋น ๋ฅด๊ณ , ๋ฉ๋ชจ๋ฆฌ/๋์คํฌ ํจ์จ๋ ์ข์.
---
## 6. ํ์
์์ ๋์ปค ํ์ฉ ์ฌ๋ก
- **๊ฐ๋ฐ ํ๊ฒฝ ๊ณต์ **
- ํ์ ๋ชจ๋ ๊ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ ์ฌ์ฉ (ํ๊ฒฝ ์ฐจ์ด๋ก ์ธํ ๋ฌธ์ ๋ฐฉ์ง)
- **ํ
์คํธ ๋ฐ ๋ฐฐํฌ ์๋ํ (CI/CD)**
- GitHub Actions, Jenkins, GitLab CI/CD์ ์ฐ๊ณํด ์๋ ๋ฐฐํฌ
- **๋ง์ดํฌ๋ก์๋น์ค ์ด์**
- ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ์ปจํ
์ด๋๋ก ์๋น์ค ์ด์ (์: ์น, DB, ์บ์ ๋ถ๋ฆฌ)
- **ํด๋ผ์ฐ๋ ํ๊ฒฝ๊ณผ ๊ฒฐํฉ**
- AWS ECS, EKS / GCP GKE / Azure AKS ๋ฑ๊ณผ ํจ๊ป ์ฌ์ฉ
---
# โ
์ ๋ฆฌ
- ๋์ปค๋ **์ด๋ฏธ์ง → ์ปจํ
์ด๋ ์คํ ๊ตฌ์กฐ**
- **Docker CLI → Daemon → containerd → runc** ํ๋ฆ
- ํ์
์์๋ **๊ฐ๋ฐํ๊ฒฝ ํต์ผ, ์๋ํ ๋ฐฐํฌ, ๋ง์ดํฌ๋ก์๋น์ค ์ด์**์ ํ์
---
๐ ์ฌ๊ธฐ๊น์ง ํ๋ฉด **๋์ปค ์ฌ์ฉ ๊ตฌ์กฐ + ์ค์น + ๋์ ์๋ฆฌ + Hello World ์ค์ต**์ ์ ์ฒด์ ์ผ๋ก ์ดํดํ ์ ์์ด์.
'Cloud Engineering Bootcamp > 6. Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
05. ๋์ปค(Docker) ์ปจํ ์ด๋ ๋คํธ์ํฌ ์ฌ์ฉํ๊ธฐ (0) | 2025.09.19 |
---|---|
04. ๋์ปค(Docker) ๊ธฐ์ด ๋ช ๋ น์ด ์ฌ์ฉํ๊ธฐ (0) | 2025.09.18 |
03. ๋์ปค(Docker) ์ค์นํ๊ธฐ (0) | 2025.09.18 |
01. ๋์ปค(Docker) ์ดํดํ๊ธฐ (0) | 2025.09.17 |