본문 바로가기
DevLog/Redis

🚨 Docker로 Redis 실행 시 포트 충돌 에러 해결하기 (bind: address already in use)

by sunsetk 2025. 8. 28.

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로 점유 상태부터 확인하는 습관을 들이자.