Docker κΈ°μ΄
Docker κΈ°μ΄¶
1. Dockerλ?¶
Dockerλ 컨ν μ΄λ κΈ°λ° κ°μν νλ«νΌμ λλ€. μ ν리μΌμ΄μ κ³Ό κ·Έ μ€ν νκ²½μ ν¨ν€μ§νμ¬ μ΄λμλ λμΌνκ² μ€νν μ μκ² ν΄μ€λλ€.
μ Dockerλ₯Ό μ¬μ©ν κΉμ?¶
λ¬Έμ μν©:
κ°λ°μ A: "λ΄ μ»΄ν¨ν°μμλ λλλ°μ?"
κ°λ°μ B: "μ λ Node 18μΈλ° μλ²λ Node 16μ΄λ€μ..."
μ΄μν: "λΌμ΄λΈλ¬λ¦¬ λ²μ μ΄ λ¬λΌμ μλ¬κ° λμ"
Docker ν΄κ²°μ± :
λͺ¨λ νκ²½μ 컨ν
μ΄λλ‘ ν¨ν€μ§ β μ΄λμλ λμΌνκ² μ€ν
Dockerμ μ₯μ ¶
| μ₯μ | μ€λͺ |
|---|---|
| μΌκ΄μ± | κ°λ°/ν μ€νΈ/μ΄μ νκ²½ λμΌ |
| 격리 | μ ν리μΌμ΄μ κ° λ 립 μ€ν |
| μ΄μμ± | μ΄λμλ λμΌνκ² μ€ν |
| κ²½λ | VMλ³΄λ€ λΉ λ₯΄κ³ κ°λ²Όμ |
| λ²μ κ΄λ¦¬ | μ΄λ―Έμ§λ‘ νκ²½ λ²μ κ΄λ¦¬ |
2. 컨ν μ΄λ vs κ°μλ¨Έμ (VM)¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β κ°μλ¨Έμ (VM) 컨ν
μ΄λ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββ βββββββ βββββββ βββββββ βββββββ βββββββ β
β βApp Aβ βApp Bβ βApp Cβ βApp Aβ βApp Bβ βApp Cβ β
β βββββββ€ βββββββ€ βββββββ€ βββββββ΄ββ΄ββββββ΄ββ΄ββββββ€ β
β βGuestβ βGuestβ βGuestβ β Docker Engine β β
β β OS β β OS β β OS β ββββββββββββββββββββββββ€ β
β βββββββ΄ββ΄ββββββ΄ββ΄ββββββ€ β Host OS β β
β β Hypervisor β ββββββββββββββββββββββββ€ β
β ββββββββββββββββββββββββ€ β Hardware β β
β β Host OS β ββββββββββββββββββββββββ β
β ββββββββββββββββββββββββ€ β
β β Hardware β β OS 곡μ β κ°λ³κ³ λΉ λ¦ β
β ββββββββββββββββββββββββ β μ΄ λ¨μ μμ β
β β κ° VMλ§λ€ OS νμ β μ μ 리μμ€ μ¬μ© β
β β λΆ λ¨μ μμ β
β β λ§μ 리μμ€ μ¬μ© β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3. Docker ν΅μ¬ κ°λ ¶
μ΄λ―Έμ§ (Image)¶
- 컨ν μ΄λλ₯Ό λ§λ€κΈ° μν ν νλ¦Ώ
- μ½κΈ° μ μ©
- λ μ΄μ΄ κ΅¬μ‘°λ‘ κ΅¬μ±
βββββββββββββββββββββββ
β Application β β λ΄ μ ν리μΌμ΄μ
βββββββββββββββββββββββ€
β Node.js 18 β β λ°νμ
βββββββββββββββββββββββ€
β Ubuntu 22.04 β β κΈ°λ³Έ OS
βββββββββββββββββββββββ
μ΄λ―Έμ§ λ μ΄μ΄
컨ν μ΄λ (Container)¶
- μ΄λ―Έμ§λ₯Ό μ€νν μΈμ€ν΄μ€
- μ½κΈ°/μ°κΈ° κ°λ₯
- 격리λ νκ²½μμ μ€ν
μ΄λ―Έμ§ ββββ⢠컨ν
μ΄λ
(μ€κ³λ) (μ€μ 건물)
νλμ μ΄λ―Έμ§ β μ¬λ¬ 컨ν
μ΄λ μμ± κ°λ₯
Docker Hub¶
- Docker μ΄λ―Έμ§ μ μ₯μ (GitHub κ°μ μν )
- 곡μ μ΄λ―Έμ§ μ 곡: nginx, node, python, mysql λ±
- https://hub.docker.com
4. Docker μ€μΉ¶
macOS¶
Docker Desktop μ€μΉ (κΆμ₯): 1. Docker Desktop λ€μ΄λ‘λ 2. DMG νμΌ μ€ν 3. Applications ν΄λλ‘ λλκ·Έ 4. Docker Desktop μ€ν
Homebrewλ‘ μ€μΉ:
brew install --cask docker
Windows¶
- Docker Desktop λ€μ΄λ‘λ
- μ€μΉ νλ‘κ·Έλ¨ μ€ν
- WSL 2 λ°±μλ νμ±ν (κΆμ₯)
- μ¬μμ ν Docker Desktop μ€ν
Linux (Ubuntu)¶
# 1. μ΄μ λ²μ μ κ±°
sudo apt remove docker docker-engine docker.io containerd runc
# 2. νμν ν¨ν€μ§ μ€μΉ
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# 3. Docker GPG ν€ μΆκ°
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. Docker μ μ₯μ μΆκ°
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. Docker μ€μΉ
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 6. μ¬μ©μλ₯Ό docker κ·Έλ£Ήμ μΆκ° (sudo μμ΄ μ¬μ©)
sudo usermod -aG docker $USER
# λ‘κ·Έμμ ν λ€μ λ‘κ·ΈμΈ
5. μ€μΉ νμΈ¶
# Docker λ²μ νμΈ
docker --version
# μΆλ ₯ μ: Docker version 24.0.7, build afdd53b
# Docker μμΈ μ 보
docker info
# ν
μ€νΈ 컨ν
μ΄λ μ€ν
docker run hello-world
hello-world μ€ν κ²°κ³Ό¶
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image.
4. The Docker daemon streamed that output to the Docker client.
...
6. Docker μλ ν릶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β docker run nginx β
β β β
β βΌ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Docker βββββΆβ Docker βββββΆβ Docker β β
β β Client β β Daemon β β Hub β β
β β (CLI) β β (μλ²) β β (μ΄λ―Έμ§μ μ₯μ)β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β β β
β β μ΄λ―Έμ§ λ€μ΄λ‘λ β β
β ββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββ β
β β Container β β
β β (nginx) β β
β βββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- docker run λͺ λ Ή μ€ν
- Docker Clientκ° Docker Daemonμ μμ²
- λ‘컬μ μ΄λ―Έμ§ μμΌλ©΄ Docker Hubμμ λ€μ΄λ‘λ
- μ΄λ―Έμ§λ‘ 컨ν μ΄λ μμ± λ° μ€ν
μ€μ΅ μμ ¶
μμ 1: 첫 λ²μ§Έ 컨ν μ΄λ μ€ν¶
# hello-world μ΄λ―Έμ§ μ€ν
docker run hello-world
# μ€ν μ€μΈ 컨ν
μ΄λ νμΈ
docker ps
# λͺ¨λ 컨ν
μ΄λ νμΈ (μ’
λ£λ κ² ν¬ν¨)
docker ps -a
μμ 2: Nginx μΉμλ² μ€ν¶
# Nginx 컨ν
μ΄λ μ€ν (λ°±κ·ΈλΌμ΄λ)
docker run -d -p 8080:80 nginx
# λΈλΌμ°μ μμ http://localhost:8080 μ μ
# μ€ν μ€μΈ 컨ν
μ΄λ νμΈ
docker ps
# 컨ν
μ΄λ μ€μ§
docker stop <컨ν
μ΄λID>
λͺ λ Ήμ΄ μμ½¶
| λͺ λ Ήμ΄ | μ€λͺ |
|---|---|
docker --version |
λ²μ νμΈ |
docker info |
Docker μμΈ μ 보 |
docker run μ΄λ―Έμ§ |
컨ν μ΄λ μ€ν |
docker ps |
μ€ν μ€μΈ 컨ν μ΄λ λͺ©λ‘ |
docker ps -a |
λͺ¨λ 컨ν μ΄λ λͺ©λ‘ |
λ€μ λ¨κ³¶
02_Images_and_Containers.mdμμ μ΄λ―Έμ§μ 컨ν μ΄λλ₯Ό μμΈν λ€λ€λ΄ μλ€!