반응형
해당 글에서는 Dockerfile을 이용하여 Redis를 구축하는 환경 구성과 실행방법에 대해 알아봅니다.
💡 [참고] Redis에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
주제 | 링크 |
Redis(Remote Dictionary Server) 이해하기 -1 : 구조 및 특징, 아키텍처 | https://adjh54.tistory.com/447 |
Redis(Remote Dictionary Server) 이해하기 -2 : MacOS 로컬 환경 구성 및 명령어 | https://adjh54.tistory.com/448 |
💡 [참고] Docker에 대해 더 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
분류 | 설명 | 링크 |
이해하기 | Docker 환경 설치 및 실행 방법 | https://adjh54.tistory.com/350 |
이해하기 | Docker 기초 이론(아키텍처, 흐름, 주요 용어) | https://adjh54.tistory.com/352 |
이해하기 | Docker 컨테이너 라이프 사이클 & CLI | https://adjh54.tistory.com/359 |
이해하기 | DockerFile 이론 + Nginx 환경 구성 및 배포 방법 | https://adjh54.tistory.com/414 |
환경구성 | DockerFile + Vault 환경 구성 및 배포 방법 | https://adjh54.tistory.com/415 |
환경구성 | DockerFile + React 환경 구성 및 배포 방법 | https://adjh54.tistory.com/417 |
환경구성 | DockerFile + Spring Boot 환경 구성 및 배포 방법 | https://adjh54.tistory.com/420 |
환경구성 | DockerFile + Redis 환경 구성 및 배포 방법 | https://adjh54.tistory.com/449 |
1) Redis(Remote Dictionary Server)
💡 Redis(Remote Dictionary Server)
- NoSQL 데이터베이스 중 하나이며 오픈소스 소프트웨어입니다. 주요한 특징은 ‘키-값(Key-Value)’ 형태로 데이터를 저장하고 이 데이터를 ‘인-메모리 데이터 저장소’에 저장합니다.
- ‘키-값(Key-Value)’ 형태로 데이터를 저장을 하며 ‘다양한 종류의 값’을 지정 가능합니다. 값으로는 문자열, 리스트, 셋, 정렬된 셋, 해시 등을 지원합니다.
- ‘인 메모리 데이터 저장소’를 사용하기에 서버의 메인 메모리에 모든 데이터를 저장하므로, 디스크 I/O를 거치는 다른 데이터베이스 시스템보다 훨씬 빠른 성능을 보여줍니다.
- 메모리에 저장되는 데이터 베이스는 디스크에 저장하여 휘발성으로 사용되는 데이터를 영구적으로 저장하는 기능을 제공하여 서버가 다운되더라도 데이터를 복구할 수 있습니다.
- 주로 데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용될 수 있습니다.
[ 더 알아보기 ]
💡 NoSQL
- ‘Not Only SQL’ 또는 ‘Non-Relational SQL’이라는 의미를 가지며 관계형 데이터베이스 관리 시스템(RDBMS)이 아닌 다른 형태의 데이터 저장소를 의미하며 스키마가 없거나 유연한 스키마를 가지고 있어 데이터 구조가 고정되어 있지 않습니다. 이로 인해 다양한 형태의 데이터를 저장하고 관리할 수 있습니다.
- NoSQL은 대용량 분산 데이터 처리를 위해 개발되었으며 데이터의 구조적 유연성과 확장성을 제공합니다.
💡 Redis 서버를 내리고 다시 서버를 올리면 데이터가 모두 사라질까?
- Redis는 기본적으로 인-메모리 데이터 구조 저장소이기 때문에, 서버가 종료되면 메모리에 저장된 데이터는 사라집니다.
- 그러나 Redis는 디스크에 데이터를 저장하는 영구 저장 기능을 제공합니다. 이 기능을 사용하면, 서버가 종료되어도 데이터를 복구할 수 있습니다.
- 이 영구 저장 방식은 RDB (Redis DataBase)와 AOF (Append Only File) 두 가지 방법이 있습니다.
2) Dockerfile
💡 도커 파일(Dockerfile)
- 도커 이미지를 만들고 빌드하기 위한 ‘텍스트 파일’을 의미합니다. 이는 컨테이너 이미지를 구성하는데 필요한 모든 단계와 명령을 정의합니다.
- 도커 파일을 사용하면 반복적이고 일관적인 컨테이너 이미지 빌드 프로세스를 자동화할 수 있습니다.
1. Dockerfile 수행과정
💡 Dockerfile 수행과정
1. Dockerfile
- 도커파일에서 일련의 명령을 작성하여 이미지를 빌드하는 방법을 지정합니다. 또한 이미지를 지정하고 필요한 패키지를 설치하고 파일을 복사하여 명령을 실행하는 등의 작업을 수행합니다.
2. Dockerfile → (Build)
- 도커 엔진이 도커 파일을 한 줄씩 읽어서 이미지를 빌드합니다 :Dockerfile Layer
3. Docker Image → (Run) → Docker Container
- 빌드된 이미지를 실행하여 도커 컨테이너를 구성합니다.
3) Redis 환경구성
1. 패키지 구조
💡 패키지 구조
- Dockerfile 기반 redis를 구축하기 위해 아래와 같은 패키지를 구성하였습니다.
💡 [참고] 해당 구성사항은 아래의 Repository를 통해 확인이 가능합니다.
2. dockerfile 구성
💡 Dockerfile 구성
- 해당 Dockerfile은 Redis를 구성하고 즉시 실행하기 위한 설정으로 구성되어 있습니다.
# Redis의 공식 Docker 이미지를 기반으로 합니다.
FROM redis:7.2.4-alpine3.19
# Redis의 기본 포트인 6379를 열어줍니다.
EXPOSE 6379
# Redis 서버를 실행합니다.
CMD ["redis-server"]
Docker 명령어 | 설명 |
FROM redis:7.2.4-alpine3.19 | Redis의 공식 Docker 이미지를 기반으로 합니다. |
EXPOSE 6379 | Redis의 기본 포트인 6379를 열어줍니다. |
CMD ["redis-server"] | Redis 서버를 실행합니다. |
[ 더 알아보기 ]
💡 alpine 버전을 받는 이유는?
- Alpine 버전을 선택하는 주된 이유는 그 크기와 보안입니다. Alpine 이미지는 매우 작기 때문에 다운로드 시간이 단축되고, 디스크 공간을 아낄 수 있습니다. 또한, Alpine은 보안에 초점을 맞춘 배포판이므로, 도커 이미지의 보안을 강화하는 데 도움이 됩니다.
4) Redis 실행하기
1. 컨테이너 이미지 생성
💡 컨테이너 이미지 생성
- dockerfile이 존재하는 경로로 접근하여 dockerfile을 빌드합니다.
# format
$ docker build -t <컨테이너 이미지 이름> .
# 컨테이너 이미지 생성
$ docker build . -t simple-redis
💡 Docker Deskop에서 생성된 컨테이너 이미지를 확인합니다.
💡 [참고] Docker Desktop 설치 및 구성 방법
2. 컨테이너 실행
💡 컨테이너 실행
- 생성된 이미지를 기반으로 컨테이너를 실행합니다.
# format
$ docker run -d --name <컨테이너 이름> -p 6379:6379 <실행할 이미지 이름>
# 컨테이너 생성 및 실행
$ docker run -d --name simple-redis -p 6379:6379 simple-redis
명령어 | 설명 |
docker run | Docker 이미지를 실행하는 명령어 |
-d | 컨테이너를 백그라운드에서 실행하도록 설정 |
--name simple-redis | 실행하는 컨테이너의 이름을 'simple-redis'으로 지정 |
-p 6379:6379 | 호스트 기기의 3000번 포트와 컨테이너의 3000번 포트를 연결 |
simple-redis | 실행할 Docker 이미지의 이름 |
💡 [참고] Docker Desktop에서 생성된 컨테이너 상태를 확인합니다.
3. Redis 접근해보기
💡 Redis 접근해 보기
- local에서 background로 실행되는 redis를 우선 중지하였습니다.
💡 실행 중인 docker 컨테이너를 확인합니다
$ docker ps
💡 docker ps를 통해 확인한 CONTAINER ID를 기반으로 redis-cli를 수행하여 redis에 접근이 됨을 확인하였습니다.
# localhost에서 6379번 포트로 구성한 redis에 접근합니다.
$ docker exec -it <CONTAINER ID> redis-cli
4. 컨테이너를 멈추고 다시 접근
💡 컨테이너를 멈추고 다시 접근
- 실제 구성한 컨테이너에 접근하는지 확인하기 위해 Docker 컨테이너를 멈추고 접근합니다.
$ docker ps
# # redis-cli를 접근합니다.
$ docker exec -it <CONTAINER ID> redis-cli
오늘도 감사합니다. 😀
반응형
'Docker > 환경설정 및 구성' 카테고리의 다른 글
[Docker] Docker Compose를 이용한 RabbitMQ 노드 클러스터링 구성하기 (0) | 2024.06.28 |
---|---|
[Docker] Dockerfile을 이용한 RabbitMQ 환경 구성 및 실행방법 (0) | 2024.05.28 |
[Docker] Dockerfile을 이용한 Spring Boot App 환경 구성 및 실행방법 (1) | 2024.02.05 |
[Docker] Dockerfile을 이용한 React App 배포 환경 구성 및 실행방법 (0) | 2024.02.03 |
[Docker] Dockerfile을 이용한 Vault 배포 환경 구성 및 실행방법 (0) | 2024.02.03 |