Docker μ΄λ―Έμ§ vs 컨ν
μ΄λ
| κ΅¬λΆ | μ΄λ―Έμ§(Image) | 컨ν
μ΄λ(Container) |
|---|
| μ μ | μ€ν κ°λ₯ν μννΈμ¨μ΄ ν¨ν€μ§ | μ΄λ―Έμ§μ μ€ν μΈμ€ν΄μ€ |
| μν | μ μ (μ½κΈ° μ μ©) | λμ (μ€ν μ€) |
| λΉμ | νλ‘κ·Έλ¨ μ€μΉ νμΌ(.exe) | μ€ν μ€μΈ νλ‘κ·Έλ¨ |
| μμ | nginx:latest, mysql:8.0 | nginx μΉμλ²κ° μ€μ μ€νλλ μν |
βοΈ μ»¨ν
μ΄λ μλͺ
μ£ΌκΈ°

Docker Linuxμ μ€μΉ (AWS)
docker run -d -p 3000:3000 --name my-node node:18 `
node -e "require('http').createServer((req,res)=>{res.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});res.end('<h1>μλ
νμΈμ! Node.js 컨ν
μ΄λμ
λλ€ π³</h1>');}).listen(3000,()=>console.log('Server running on port 3000'));"
πͺ μ’
ν© μ€μ΅: λ©ν° 컨ν
μ΄λ νκ²½ ꡬμ±
# μλ‘μ΄ λ€νΈμν¬ μμ±
docker network create blog-network
# 1. MySQL λ°μ΄ν°λ² μ΄μ€ 컨ν
μ΄λ μ€ν
docker run -d \
--name blog-mysql \
--network blog-network \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=blog \
-e MYSQL_USER=bloguser \
-e MYSQL_PASSWORD=blogpass \
-p 3306:3306 \
mysql:8.0
# 2. μ μ λκΈ° (MySQL μ΄κΈ°ν μκ°)
sleep 30
# 3. phpMyAdminμΌλ‘ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ λꡬ μ€ν
docker run -d \
--name blog-phpmyadmin \
--network blog-network \
-e PMA_HOST=blog-mysql \
-e PMA_PORT=3306 \
-p 8080:80 \
phpmyadmin:latest
# 4. Redis μΊμ μλ² μ€ν
docker run -d \
--name blog-redis \
-p 6379:6379 \
redis:alpine
# 5. Nginx μΉμλ² μ€ν
docker run -d \
--name blog-nginx \
-p 80:80 \
nginx:alpine
# μ€ν μ€μΈ λͺ¨λ 컨ν
μ΄λ νμΈ
docker ps