Docker Compose는 여러 개의 컨테이너를 하나로 묶어 정의하고 실행할 수 있도록 돕는 도구입니다.
하나의 명령어(docker compose up)로 여러 컨테이너를 켜고 끌 수 있게 해줍니다.
docker-compose.yml파일은 각각의 컨테이너들을 실행할 때 필요한 옵션들을 적어둔 문서입니다.
1. Redis 폴더를 생성합니다.
C:\workspaces\docker\redis
2. C:\workspaces\docker\redis에 docker-compose.yml파일을 생성합니다.
# compose 파일 버전
version: "3.9"
# 컨테이너 내의 서비스들 정의
services:
# 서비스명(이름을 설정해도 docker-compose.yml 파일이 있는 폴더명(프로젝트명)으로 생성됨)
redis:
# 가져올 이미지:버전
image: redis:8.2.1
# 컨테이너명 (설정하지 않으면 서비스명-번호 형식으로 자동 생성됨 redis-1)
container_name: dev-redis
# 실행 명령어
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
# 연결된 포트 (컨테이너 외부:컨테이너 내부)
ports:
- "6379:6379"
# 볼륨 (컨테이너 외부 경로:컨테이너 내부 경로)
volumes:
# 데이터 유지
- C:\workspaces\docker\redis\redis-data:/data
# 레디스 설정 정보
- C:\workspaces\docker\redis\redis.conf:/usr/local/etc/redis/redis.conf
# 컨테이너 재시작 - 컨테이너 자동 재시작
restart: unless-stopped
3. C:\workspaces\docker\redis에 redis.conf파일을 생성합니다.
redis.conf파일은 Redis의 동작을 제어하는 설정 파일입니다.
내부 개발만 사용하기 때문에 간단하게 설정하였습니다.
# 허용된 IP
bind 0.0.0.0
# 허용된 PORT
port 6379
# 패스워드로 레디스에 접근
protected-mode yes
# 패스워드
requirepass kiki@2000
# 데이터 저장 경로
dir /data

4. docker-compose up 명령어로 실행합니다.
docker-compose up 명령어
설정 파일(docker-compose.yml)에 정의된 여러 컨테이너, 네트워크, 볼륨 등의 리소스를 한 번에 생성하고 실행합니다.
컨테이너가 없으면 새로 생성합니다.
설정 파일이 있는 경로에서 명령어를 실행해야 합니다.
docker compose up [OPTIONS] [SERVICE...]

-d : 컨테이너가 백그라운드로 실행됩니다.
docker-compose up -d

5. 실행 중인 redis 컨테이너에 redis-cli를 접속하여 명령어를 실행합니다.
docker exec -it dev-redis redis-cli -h 127.0.0.1 -p 6379 -a kiki@2000
<-- docker exec -it <CONTINER NAMES> redis-cli -h <HOST> -p <PORT> -a <PASSWORD>

경고: 명령줄 인터페이스에서 '-a' 또는 '-u' 옵션과 함께 비밀번호를 사용하는 것은 안전하지 않을 수 있습니다.
상태 백업: Redis에 데이터를 입력하거나 redis.conf 설정을 변경한 후, 그 상태 그대로를 이미지로 얼려두고 싶을 때 사용합니다.디버깅 및 공유: 특정 에러나 데이터가 존재하는 상태를 그대로 이미지로 만들어 동료에게 전달할 수 있습니다.
start 명령어
정지 상태인 컨테이너를 다시 실행합니다.
설정 파일이 있는 경로에서 명령어를 실행해야 합니다.
docker-compose start <-- docker-compose.yml에 정의된 모든 서비스를 시작합니다.
docker-compose start [서비스명] <-- 서비스만 실행합니다.
stop 명령어
실행중인 컨테이너를 중지합니다.
설정 파일이 있는 경로에서 명령어를 실행해야 합니다.
docker-compose stop <-- docker-compose.yml에 정의된 모든 서비스를 중지합니다.
docker-compose stop [서비스명] <-- 서비스만 중지합니다.
rm 명령어
컨테이너를 삭제합니다.
설정 파일이 있는 경로에서 명령어를 실행해야 합니다.
docker-compose rm
ps 명령어
컨테이너를 리스트로 보여줍니다.
설정 파일이 있는 경로에서 명령어를 실행해야 합니다.
docker-compose ps -a
알아두기
Docker Compose 대신 다운로드 받은 image를 컨테이너를 생성할 경우 Ports나 Volumes, Enviroment variables를 추가할 수 있으나 command는 Desktop UI에서는 추가할 수 없습니다.

그래서 docker run으로 컨테이너를 생성해야 합니다.
docker run -d `
--name dev-redis `
-p 6379:6379 `
-v C:\workspaces\docker\redis\redis-data:/data `
-v C:\workspaces\docker\redis\redis.conf:/usr/local/etc/redis/redis.conf `
acb90ced0bd7 `
redis-server /usr/local/etc/redis/redis.conf
그래야 정상적으로 작동합니다.
commit 명령어
지정된 컨테이너를 새로운 이미지로 저장합니다.
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

commit은 백업이나 특정 상황을 유지하고 공동 작업을 하고 싶을 때 사용됩니다.
백업 : 현재 데이터를 유지하기 위해서 이미지로 백업
공유 : 공동 작업을 위해 현재 상태를 그대로 이미지로 만들어 공유
스냅샷 : 장애 분석을 위해 에러가 발생한 상태를 그대로 유지하기 위해서 이미지로 백업
실행 중인 dev-redis 컨테이너의 현재 상태를 그대로 새로운 이미지(이미지 명 : dev-redis)로 저장합니다.
-a : 이미지의 작성자를 설정합니다.
-m : 커밋 메시지를 설정합니다.
docker commit -a carrotweb -m "first commit" dev-redis dev-redis:1.0.0
<-- docker commit [OPTIONS] <컨테이너 이름> <새롭게 생성할 이미지 이름:<태그>>

[images]에 새롭게 생성된 이미지가 나타납니다.

'Spring & Spring Boot > Docker & Monitoring' 카테고리의 다른 글
| [2] Spring Boot App 모니터링 - Prometheus, Grafana로 모니터링 (0) | 2026.10.03 |
|---|---|
| [1] Spring Boot App 모니터링 - Spring Boot Actuator, Micrometer (0) | 2026.10.03 |
| [4] Docker - 명령어로 Redis CLI 실행, 환경 설정 (0) | 2026.09.15 |
| [3] Docker - 명령어로 설치 및 컨테이너 실행, Redis (0) | 2026.09.15 |
| [2] Docker - 이미지 다운로드 및 컨테이너 실행, Redis (0) | 2026.09.15 |