반응형
docker network, volume 이해하기
Docker compose로 redis 실행하기
1. redis volume 생성하는 이유
redis 컨테이너를 종료 후 재시작하면, 기존 레디스에 저장해 둔 데이터가 보존되지 않습니다.
레디스를 재시작하지 않으면 되지 않나? 라고 생각할 수 도 있습니다.
만약, Github Action을 통해 다른 이미지와 함께 실행하는 경우, 변경된 사항이 있으면 docker compose down 후
다시 docker compose up 을 통해 같이 재시작될 수도 있습니다.
위와 같은 경우의 기존 레디스에 저장해둔 데이터를 보존하기 위해 volume을 생성하여 마운트 하면 데이터를 보존할 수 있습니다.
Redis가 도커 컨테이너 내에서 실행될 경우, 해당 컨테이너가 중지 또는 삭제되면 레디스에 저장된 모든 데이터가 손실된다.
이를 방지하기 위해 볼륨 마운트를 사용하면 Redis 컨테이너가 호스트 머신(ubuntu)의 파일 시스템에 데이터를 쓸 수 있다.
즉, 컨테이너가 중지/삭제돼도 데이터를 지속할 수 있게 됩니다.
docker volume create
docker volume create redis
docker run --name redis -v /var/lib/docker/volumes/redis/_data:/data redis
컨테이너 실행 명령어에 -v 옵션을 사용하면 볼륨 마운트를 지정할 수 있습니다.
Docker에서 볼륨 마운트를 지정하면 Redis 컨테이너가 호스트 머신의 파일 시스템에 데이터를 저장할 수 있습니다.
/var/lib/docker/volumes/redis/_data 확인하기
sudo su - # 관리자 권한으로 실행하기
cd /var/lib/docker/volumes/redis
docker volume create redis를 통해 볼륨 마운트할 경로에 디렉터리가 생긴 것을 확인할 수 있습니다.
2. redis redis.conf 설정 및 requirepass 지정하기
방법 1
docker run -v /path/on/host:/data
--name my-redis
-p 6379:6379 redis
redis-server --appendonly yes --requirepass [password]
일반 run 명령어를 실행하면서 redis-server 이후에 redis에 설정할 부분을 작성하면 설정이 적용됩니다.
- appendonly는 데이터 영구 저장 여부를 설정합니다.
- requirepass를 통해 redis에 auth password를 설정합니다.
방법 2
/var/lib/volumes/redis/redis.conf 작성하기
해당 파일은 호스트 머신에 작성한 다음에 redis 컨테이너와 볼륨 마운트합니다.
bind 0.0.0.0
port 6379
appendonly yes
appendfilename "appendonly.aof"
requirepass [password]
redis.conf 파일을 작성하여 redis에 적용하고 싶은 부분을 한 파일에 설정할 수 있습니다.
docker compose로 redis 실행하기
version: '3'
services:
redis:
container_name: redis
image: redis
ports:
- "6379:6379"
volumes:
- /var/lib/docker/volumes/redis/_data:/data
- /var/lib/docker/volumes/redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
docker compose up
docker-compose up -d
- docker compose up이나 down을 실행하기 위해서 실행하고 있는 경로에 docker-compose.yml 파일이 있어야 합니다.!!
redis-cli 접속
redis.conf에 지정한 비밀번호를 통해 로그인합니다.
docker exec -it redis redis-cli
AUTH [password]
반응형
'Infra > Docker' 카테고리의 다른 글
[Docker] Docker run, cmd, entrypoint 차이 이해하기 (0) | 2024.09.27 |
---|---|
[Jib] Gradle Jib 을 통한 빌드 사용법 및 Jib 이해하기, 빌드 시간 단축하기기 - gradlew jib (0) | 2024.08.09 |
[Docker] Docker network, volume 이해 및 docker-compose에 network, volume 지정하기 (0) | 2024.04.21 |
Docker로 Spring Boot, Vue, MySQL 배포 및 연동하기 (0) | 2023.12.03 |
[Docker] 도커 허브 연결하기, 도커 컴포즈 docker-compose 파일 작성하기 (1) | 2023.12.03 |