ν† . 8μ›” 2nd, 2025

πŸ” Dockerλž€?

μ»¨ν…Œμ΄λ„ˆ 기반 가상화 ν”Œλž«νΌμœΌλ‘œ, “ν•œ 번 λ§Œλ“€λ©΄ μ–΄λ””μ„œλ“  μ‹€ν–‰ κ°€λŠ₯” ν•œ ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
βœ… 전톡적 가상화(VM)보닀 κ²½λŸ‰ν™”λ˜μ–΄ λΉ λ₯΄κ²Œ μ‹€ν–‰
βœ… μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 및 관리 κ°„μ†Œν™”
βœ… 개발/ν…ŒμŠ€νŠΈ/운영 ν™˜κ²½ 일관성 보μž₯


βš™οΈ μ„€μΉ˜ μ „ 쀀비사항

  1. Ubuntu 버전 확인 (20.04 LTS 이상 ꢌμž₯)
    lsb_release -a

    좜λ ₯ μ˜ˆμ‹œ

  2. μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ
    sudo apt update && sudo apt upgrade -y

πŸš€ Docker μ„€μΉ˜ 단계별 κ°€μ΄λ“œ

1️⃣ 이전 Docker 제거 (선택)

sudo apt remove docker docker-engine docker.io containerd runc

2️⃣ ν•„μˆ˜ νŒ¨ν‚€μ§€ μ„€μΉ˜

sudo apt install -y 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️⃣ μ €μž₯μ†Œ μ„€μ • πŸ“¦

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 -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

6️⃣ μ„€μΉ˜ 확인 πŸŽ‰

sudo docker run hello-world

βœ… 성곡 μ‹œ 좜λ ₯

Hello from Docker!  
This message shows your installation appears to be working correctly.

⚑ μ‚¬μš©μž κΆŒν•œ μ„€μ • (맀번 sudo λ°©μ§€)

sudo usermod -aG docker $USER  # ν˜„μž¬ μ‚¬μš©μž docker κ·Έλ£Ή μΆ”κ°€
newgrp docker                  # κ·Έλ£Ή μ„€μ • μ¦‰μ‹œ 적용

✏️ μž¬λΆ€νŒ… 없이 적용: newgrp docker λ˜λŠ” 터미널 μž¬μ‹€ν–‰


πŸ› οΈ μœ μš©ν•œ μΆ”κ°€ μ„€μ •

πŸ”„ Docker μžλ™ μ‹œμž‘ ν™œμ„±ν™”

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

πŸ”„ Docker μ„œλΉ„μŠ€ μ œμ–΄

sudo systemctl start docker    # μ‹œμž‘
sudo systemctl stop docker     # μ •μ§€
sudo systemctl restart docker  # μž¬μ‹œμž‘

ℹ️ 버전 확인

docker --version        # Docker 버전
docker compose version  # Compose ν”ŒλŸ¬κ·ΈμΈ 버전

πŸ§ͺ μ„€μΉ˜ ν…ŒμŠ€νŠΈ: Nginx μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

docker run -d -p 8080:80 --name my-nginx nginx
  1. λΈŒλΌμš°μ €μ—μ„œ http://localhost:8080 접속
  2. “Welcome to nginx!” 확인
  3. μ»¨ν…Œμ΄λ„ˆ μ •μ§€ 및 μ‚­μ œ:
    docker stop my-nginx && docker rm my-nginx

❌ 문제 ν•΄κ²° 팁

  • “Permission denied” 였λ₯˜:
    sudo chmod 666 /var/run/docker.sock  # μž„μ‹œ ν•΄κ²° (λ³΄μ•ˆ 주의!)

    β†’ 영ꡬ적 ν•΄κ²°: μ‚¬μš©μž 재둜그인 λ˜λŠ” newgrp docker μ‹€ν–‰

  • GPG ν‚€ 였λ₯˜: μ €μž₯μ†Œ μΆ”κ°€ ν›„ sudo apt update μž¬μ‹€ν–‰

βœ… 마무리 체크리슀트

  • [ ] hello-world μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ 성곡
  • [ ] μ‚¬μš©μž κΆŒν•œ κ·Έλ£Ή μΆ”κ°€ μ™„λ£Œ
  • [ ] Nginx ν…ŒμŠ€νŠΈ μ»¨ν…Œμ΄λ„ˆ 정상 μž‘λ™
  • [ ] Docker μ„œλΉ„μŠ€ μžλ™ μ‹œμž‘ ν™œμ„±ν™”

> πŸ“’ Docker의 νž˜μ„ λŠκ»΄λ³΄μ„Έμš”!
> 개발 ν™˜κ²½ μ„€μ • 5λΆ„ ➜ ν”„λ‘œλ•μ…˜ 배포 1초 😎
> bash > # μ˜ˆμ‹œ: MySQL μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ > docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw --name my-db mysql:8.0 >

μ»¨ν…Œμ΄λ„ˆ 여정이 μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€ 🚒
Ubuntu + Docker μ‘°ν•©μœΌλ‘œ 효율적인 개발 ν™˜κ²½μ„ ꡬ좕해 λ³΄μ„Έμš”!

λ‹΅κΈ€ 남기기

이메일 μ£Όμ†ŒλŠ” κ³΅κ°œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•„μˆ˜ ν•„λ“œλŠ” *둜 ν‘œμ‹œλ©λ‹ˆλ‹€