2025-09-17 13:51:45
๋ฐ˜์‘ํ˜•

# ๐Ÿณ Docker ๊ฐ€์ƒํ™” ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ

## 1. ๋„์ปค(Docker) ์ดํ•ดํ•˜๊ธฐ

### ๐Ÿ“Œ ๋„์ปค๋ž€?

- **๋„์ปค(Docker)** ๋Š” **ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒฉ๋ฆฌํ•ด์„œ ์‹คํ–‰**์‹œ์ผœ์ฃผ๋Š” ๋„๊ตฌ์˜ˆ์š”.
    
- "๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋˜๋Š”๋ฐ, ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์•ˆ ๋ผ!" ๐Ÿ‘‰ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ค˜์š”.
    
- **์ปจํ…Œ์ด๋„ˆ(Container)** ๋ผ๋Š” ์ƒ์ž ์•ˆ์— ํ”„๋กœ๊ทธ๋žจ์„ ๋„ฃ๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    
- ๊ฐ€์ƒ๋จธ์‹ (VM)๋ณด๋‹ค **๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋‹ค**๋Š” ์žฅ์ ์ด ์žˆ์–ด์š”.
    

---

## 2. ๊ฐ€์ƒํ™” vs ์ปจํ…Œ์ด๋„ˆ


```mermaid
flowchart LR
    A["๋ฌผ๋ฆฌ ์„œ๋ฒ„<br/>๐Ÿ’ป"] --> B["๊ฐ€์ƒํ™” (VM)<br/>๐Ÿ—‚๏ธ"]
    A --> C["์ปจํ…Œ์ด๋„ˆ (Docker)<br/>๐Ÿ“ฆ"]

    B --> B1["์šด์˜์ฒด์ œ ํฌํ•จ<br/>โš™๏ธ"]
    B --> B2["๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋งŽ์Œ<br/>๐Ÿ“ˆ"]

    C --> C1["๊ณต์œ  OS ์œ„ ์‹คํ–‰<br/>โšก"]
    C --> C2["๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ ์Œ<br/>๐Ÿ’ก"]
```



- **๊ฐ€์ƒํ™”(VM)**: ์šด์˜์ฒด์ œ(OS)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋„์›Œ์„œ ๋ฌด๊ฑฐ์›€.
    
- **์ปจํ…Œ์ด๋„ˆ(Docker)**: ์šด์˜์ฒด์ œ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„.
    

---

## 3. ๋„์ปค์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

- **์ด๋ฏธ์ง€(Image)**: ํ”„๋กœ๊ทธ๋žจ์„ ์ฐ์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” "๋นตํ‹€" ๊ฐ™์€ ๊ฒƒ.
    
- **์ปจํ…Œ์ด๋„ˆ(Container)**: ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ "๋นต" ๊ฐ™์€ ๊ฒƒ.
    
- **๋„์ปค ์—”์ง„(Docker Engine)**: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ.
    
- **๋„์ปค ํ—ˆ๋ธŒ(Docker Hub)**: ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” "์•ฑ์Šคํ† ์–ด" ๊ฐ™์€ ๊ณณ.
    

---

## 4. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ƒ์• ์ฃผ๊ธฐ

```mermaid
flowchart TD
    A[๐Ÿ“ฆ ์ด๋ฏธ์ง€] --> B[โ–ถ๏ธ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ]
    B --> C[โธ๏ธ ์‹คํ–‰ ์ค‘]
    C --> D[โน๏ธ ์ค‘์ง€]
    D --> E[๐Ÿ—‘๏ธ ์‚ญ์ œ]
    C --> F[๐Ÿ”„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์œผ๋กœ ๊ต์ฒด]
```



- ์ปจํ…Œ์ด๋„ˆ๋Š” **์ผํšŒ์šฉํ’ˆ**์ฒ˜๋Ÿผ ์“ฐ๊ณ  ๋ฒ„๋ฆฌ๋Š” ๊ฒŒ ๊ธฐ๋ณธ.
    
- ๋ฐ์ดํ„ฐ๋Š” **ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„ ๋””์Šคํฌ**์— ๋”ฐ๋กœ ์ €์žฅํ•ด๋‘์–ด์•ผ ์•ˆ์ „ํ•ด์š”.
    

---

## 5. ๋„์ปค์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

|โœ… ์žฅ์ |โš ๏ธ ๋‹จ์ |
|---|---|
|ํ•œ ๋Œ€์˜ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๊ฐœ ์‹คํ–‰ ๊ฐ€๋Šฅ|๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋žจ๋งŒ ์ง€์›|
|๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๋‹ค|์„œ๋ฒ„๊ฐ€ ์ฃฝ์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ๋„ ์˜ํ–ฅ|
|๊ฐœ๋ฐœํ™˜๊ฒฝ ํ†ต์ผ|์ปจํ…Œ์ด๋„ˆ 1๊ฐœ๋งŒ ์“ฐ๋ฉด ๋น„ํšจ์œจ|

---

## 6. ๋„์ปค ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์˜ˆ์‹œ (ํ•œ ์ค„์”ฉ ์ฃผ์„ ํฌํ•จ)


```bash
# ๋„์ปค ํ—ˆ๋ธŒ์—์„œ nginx(์›น ์„œ๋ฒ„) ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ
docker pull nginx  

# nginx ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ (์ด๋ฆ„์„ myweb์œผ๋กœ ์ง€์ •)
docker run --name myweb -d -p 8080:80 nginx  

# ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ํ™•์ธ
docker ps  

# ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
docker stop myweb  

# ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker rm myweb  

# ์ด๋ฏธ์ง€ ์‚ญ์ œ
docker rmi nginx  
```


๐Ÿ“ **์„ค๋ช…**


- `docker pull nginx` → "nginx๋ผ๋Š” ๋นตํ‹€์„ ๊ฐ€์ ธ์˜จ๋‹ค"
    
- `docker run` → "๊ทธ ๋นตํ‹€๋กœ ๋นต(์ปจํ…Œ์ด๋„ˆ)์„ ๊ตฝ๋Š”๋‹ค"
    
- `docker ps` → "์ง€๊ธˆ ์˜ค๋ธ์—์„œ ๊ตฝ๊ณ  ์žˆ๋Š” ๋นต๋“ค ํ™•์ธ"
    
- `docker stop` → "๋นต ๊ตฝ๋Š” ๊ฑฐ ๋ฉˆ์ถ”๊ธฐ"
    
- `docker rm` → "๋นต ๋ฒ„๋ฆฌ๊ธฐ"
    
- `docker rmi` → "๋นตํ‹€ ๋ฒ„๋ฆฌ๊ธฐ"
    

---

## 7. ํ˜„์—…์—์„œ ๋„์ปค ํ™œ์šฉ ์‚ฌ๋ก€

- **๊ฐœ๋ฐœ ํ™˜๊ฒฝ ํ†ต์ผ**
    
    - ํŒ€์› ๋ชจ๋‘ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
        
    - "๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋˜๋Š”๋ฐ?" ๋ฌธ์ œ ํ•ด๊ฒฐ
        
- **ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ**
    
    - ์ƒˆ ๋ฒ„์ „ ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ
        
    - ์˜ˆ: ๊ฐœ๋ฐœ → ํ…Œ์ŠคํŠธ → ์šด์˜ ๋ฐฐํฌ
        
- **๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค**
    
    - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์„œ๋ฒ„(์›น, DB, API)๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฐ๊ฐ ์‹คํ–‰
        
    - ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ผ ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›€
        
- **CI/CD ์ž๋™ํ™”**
    
    - ๊นƒํ—ˆ๋ธŒ → ๋„์ปค ๋นŒ๋“œ → ์„œ๋ฒ„ ๋ฐฐํฌ ์ž๋™ํ™”
        
    - ์‹ค๋ฌด์—์„œ **Jenkins, GitHub Actions, GitLab CI** ๋“ฑ๊ณผ ์ž์ฃผ ๊ฐ™์ด ์”€
        

---

## ๐Ÿš€ ์ •๋ฆฌ

- ๋„์ปค๋Š” **๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ **
    
- **์ด๋ฏธ์ง€ → ์ปจํ…Œ์ด๋„ˆ** ๊ตฌ์กฐ
    
- **ํ˜„์—…์—์„œ๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ณต์œ , ๋ฐฐํฌ ์ž๋™ํ™”, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์šด์˜**์— ํ•„์ˆ˜

๋ฐ˜์‘ํ˜•