1. 문제 상황
Docker로 Redis 컨테이너를 실행하려고 했는데 아래와 같은 에러가 발생했다.
Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:6379 -> 127.0.0.1:0: listen tcp 0.0.0.0:6379: bind: address already in use
❌ Redis 실행 실패
./start-dev.sh를 실행하면 컨테이너가 뜨지 않고 실패한다.
2. 원인 분석
- Redis의 기본 포트는 6379
- 그런데 이미 로컬에서 실행 중인 redis-server 프로세스가 6379를 점유 중이었다.
- 거기에 docker run으로 Redis를 띄우려 하니 포트가 겹쳐서 충돌 발생 ⚡️
확인 방법:
lsof -i :6379
출력 예시:
redis-ser 28080 sunsetz 6u IPv4 ... TCP *:6379 (LISTEN)
즉, 로컬 Redis가 이미 떠 있어서 도커 컨테이너 Redis와 충돌한 것.
3. 해결 방법
방법 1. 로컬 Redis 종료 후 Docker만 사용
pkill redis-server
# 또는 Homebrew로 설치했다면
brew services stop redis
다시 확인:
lsof -i :6379
이후 실행:
./start-dev.sh
정상적으로 컨테이너가 실행된다 ✅
방법 2. Docker Redis 포트 변경
만약 로컬 Redis도 계속 쓰고 싶다면 docker-compose.yml 수정:
ports:
- "6380:6379"
Spring Boot 설정도 변경:
spring.data.redis.port=6380
이렇게 하면 로컬 Redis(6379), Docker Redis(6380) 동시에 사용 가능하다.
4. 추가로 겪은 이슈
- Docker Desktop이 Paused 상태일 때도 컨테이너가 안 뜬다.
Docker Desktop is manually paused. Unpause it through the Whale menu or Dashboard.
👉 Docker Desktop 메뉴에서 Resume 클릭해 해결.
- docker-compose.yml의 version 경고
WARN[0000] the attribute `version` is obsolete, it will be ignored
- 👉 단순 경고라 무시해도 동작엔 문제 없음. 다만 최신 Compose 스펙에서는 version을 제거하는 게 권장됨.
5. 정리
- Redis 기본 포트 6379는 로컬/도커 겹치기 쉽다.
- 하나만 쓰려면 로컬 종료, 둘 다 쓰려면 포트 분리.
- 도커 환경에서는 항상 lsof, docker ps로 점유 상태부터 확인하는 습관을 들이자.
'DevLog > Redis' 카테고리의 다른 글
🚨 Spring Boot + Redis 연결 오류: RedisConnectionFailureException: Unable to connect to Redis (0) | 2025.08.20 |
---|---|
[Redis] Redis 정리 #3 - 캐시 적용과 @Cacheable 사용법 (0) | 2025.07.20 |
[Redis] Redis 정리 #2 - 자료구조와 명령어 (0) | 2025.07.20 |
[Redis] Redis 정리 #1 - 개념과 특징 (0) | 2025.07.20 |