개발/알면 좋은
도커(Docker)
댕주
2025. 3. 28. 02:27
🐳 도커(Docker)란?
앱이 실행되는 환경 자체를 하나로 묶어서 어디서든 동일하게 실행할 수 있도록 도와주는 도구
용어 | 뜻 |
이미지 | 앱 + 실행환경 + 설정을 통째로 묶은 파일 (요리 재료 패키지) |
컨테이너 | 이미지를 실행한 실체 (요리해서 실제로 먹는 음식) |
Dockerfile | 이미지 만드는 레시피 같은 설정 파일 |
Docker Hub | 도커 이미지들을 올려두는 저장소, 깃허브의 이미지 버전 |
🔥 실무에서 도커를 이해하다
[🧨 사건 발생 개요]
- AA가 신버전 이미지를 만들고 기존 이미지를 삭제함
- 문제는 서비스 설정이 여전히 구버전 이미지를 참조하고 있었던 것
- 근데 그러고 나서 정기배포 진행됨
[💥 결과]
- ✅ 배포는 됐음 (스크립트 실행)
- ❌ 근데 실제로는 참조 중인 이미지가 존재하지 않음
- ❌ 그래서 컨테이너를 새로 띄우지 못함
- ❌ 결국 사이트는 접속 불가 + 에러 대폭발
🤔 그런데 왜 이미지가 없으면 이런 일이 생기는 걸까?
- 도커에서 컨테이너는 이미지 기반으로 생성이 되는데,
- 이미지를 "복사해서 실행"하는 개념이라고 생각하면 된다.
docker run my-backend-image:1.0
- 이 명령어는 my-backend-image:1.0 이라는 이미지를 기반으로 컨테이너를 만들어서 실행하라는 의미인데,
- 그 이미지가 없으면? 실행 자체가 안되는 것
📂 그런데 기존에 배포했던 이미지를 재사용 못하나?
❌ 이미지를 삭제해도 어딘가에 캐시처럼 남아있다던가, 바로 이전 배포 때 사용했던 이미지를 사용할 수는 없을까? ❌
- 도커 컨테이너는 실행 중일 때만 살아있음
- 컨테이너를 중지하거나 재시작하면, 다시 이미지 기반으로 새로 띄움
- 이미지를 삭제해버리면 그 이미지로 만든 컨테이너도 재시작 불가
🐳 도커 로고는 왜 고래일까?
도커 로고를 보면 푸른 고래가 등에 박스(컨테이너)를 싣고 있는 모습을 하고 있다.
귀엽기도 하지만, 단순히 귀여운 로고를 만든건 아니고 도커의 역할을 시각적으로 표현한 것이다.
- 🐳 고래 = 도커 자체
- 📦 박스들 = 컨테이너 (앱 + 환경을 담은 패키지)
- 🌊 바다 = 로컬 / 운영 / 테스트 환경
즉, 도커는 여러 개의 컨테이너를 등에 싣고
환경이라는 바다 위를 헤엄치는 고래라는 의미이다.
✏️ 정리
✍🏻 도커 한 줄 요약
"제 로컬에서는 잘 되는데요?" 를 없애주는 환경 통합 도구
도커는 실행 환경을 '이미지'에 강제로 박아버리는 구조이기 때문에
어디서 실행하든 동일한 결과가 나오도록 강제 통일 시킨다.