개발/알면 좋은

도커(Docker)

댕주 2025. 3. 28. 02:27

🐳 도커(Docker)란?

앱이 실행되는 환경 자체를 하나로 묶어서 어디서든 동일하게 실행할 수 있도록 도와주는 도구

용어
이미지 앱 + 실행환경 + 설정을 통째로 묶은 파일 (요리 재료 패키지)
컨테이너 이미지를 실행한 실체 (요리해서 실제로 먹는 음식)
Dockerfile 이미지 만드는 레시피 같은 설정 파일
Docker Hub 도커 이미지들을 올려두는 저장소, 깃허브의 이미지 버전

🔥 실무에서 도커를 이해하다

[🧨 사건 발생 개요]

  • AA가 신버전 이미지를 만들고 기존 이미지를 삭제함
  • 문제는 서비스 설정이 여전히 구버전 이미지를 참조하고 있었던 것
  • 근데 그러고 나서 정기배포 진행됨

[💥 결과]

  • ✅ 배포는 됐음 (스크립트 실행)
  • ❌ 근데 실제로는 참조 중인 이미지가 존재하지 않음
  • ❌ 그래서 컨테이너를 새로 띄우지 못함
  • ❌ 결국 사이트는 접속 불가 + 에러 대폭발

🤔 그런데 왜 이미지가 없으면 이런 일이 생기는 걸까?

  • 도커에서 컨테이너는 이미지 기반으로 생성이 되는데,
  • 이미지를 "복사해서 실행"하는 개념이라고 생각하면 된다.
docker run my-backend-image:1.0
  • 이 명령어는 my-backend-image:1.0 이라는 이미지를 기반으로 컨테이너를 만들어서 실행하라는 의미인데,
  • 그 이미지가 없으면? 실행 자체가 안되는 것

 

📂 그런데 기존에 배포했던 이미지를 재사용 못하나?

❌ 이미지를 삭제해도 어딘가에 캐시처럼 남아있다던가, 바로 이전 배포 때 사용했던 이미지를 사용할 수는 없을까? ❌

  • 도커 컨테이너는 실행 중일 때만 살아있음
  • 컨테이너를 중지하거나 재시작하면, 다시 이미지 기반으로 새로 띄움
  • 이미지를 삭제해버리면 그 이미지로 만든 컨테이너도 재시작 불가

🐳 도커 로고는 왜 고래일까?

도커 로고를 보면 푸른 고래가 등에 박스(컨테이너)를 싣고 있는 모습을 하고 있다.

귀엽기도 하지만, 단순히 귀여운 로고를 만든건 아니고 도커의 역할을 시각적으로 표현한 것이다.

  • 🐳 고래 = 도커 자체
  • 📦 박스들 = 컨테이너 (앱 + 환경을 담은 패키지)
  • 🌊 바다 = 로컬 / 운영 / 테스트 환경

즉, 도커는 여러 개의 컨테이너를 등에 싣고

환경이라는 바다 위를 헤엄치는 고래라는 의미이다.


✏️ 정리

✍🏻 도커 한 줄 요약
"제 로컬에서는 잘 되는데요?" 를 없애주는 환경 통합 도구

 

도커는 실행 환경을 '이미지'에 강제로 박아버리는 구조이기 때문에

어디서 실행하든 동일한 결과가 나오도록 강제 통일 시킨다.