Docker에서 Redis를 실행하는 방법과 이유
게시 됨: 2023-05-02Redis는 가용성이 높은 인메모리 데이터베이스입니다. 디스크 영구 키-값 데이터 저장소는 여러 고가용성 사용에 이상적입니다.
반면 Docker는 애플리케이션과 서비스를 컨테이너화하고 환경을 격리하며 개별적으로 실행할 수 있도록 하는 도구입니다. 필요한 모든 종속성, 구성, 스크립트 등이 있는 애플리케이션 및 서비스의 패키지 관리자로 Docker를 사용할 수 있습니다. Dockerfile이라는 스크립트는 Docker 컨테이너 내부에 배치되며 컨테이너를 단일 엔터티로 배포할 수 있습니다.
이 기사에서는 이 두 가지 오픈 소스 기술을 효과적으로 사용하는 방법을 알려줍니다. 또한 Docker 컨테이너 내에서 Redis 클러스터를 실행하는 것이 중요한 이유와 가상 머신 또는 베어메탈 서버에서 Redis 클러스터를 실행하는 것과 비교할 때 이점 및 이점에 대해 다룹니다.
Redis의 다양한 용도
Redis에는 몇 가지 장점이 있습니다. 가장 널리 사용되는 용도는 다음과 같습니다.
- 분산된 키-값 데이터베이스 캐시
- 메시지 브로커
- 영구 개체 캐싱 서버
또한 Redis는 여러 데이터 유형 및 구조를 지원할 수 있으므로 애플리케이션의 기본 및 보조 데이터베이스 계층으로 사용하기에 적합합니다. 또한 목록, 스트림, 해시, 세트 등을 지원합니다.
그러나 Redis를 컨테이너화하여 Redis의 이점을 더욱 강화할 수 있습니다.
Redis는 컨테이너 내부에서 최고입니다.
Redis는 Docker 레지스트리에서 가장 인기 있는 Docker 이미지 중 하나이며 10억 회 이상 다운로드되었습니다. Redis 애플리케이션을 컨테이너화하는 이유는 가장 일반적인 Redis 사용 사례에 대한 Docker의 이점과 커뮤니티 지원을 얻기 위해서입니다.
Redis Docker 이미지에는 명확한 문서를 만들고 유지 관리하는 오픈 소스 커뮤니티가 있습니다. 게다가 Docker는 매우 안정적이며 쉽게 사용하고 유연하게 사용할 수 있습니다.
사용의 용이성
Docker는 컨테이너 내부에서 실행되는 앱과 서비스 모두에 대한 환경을 격리합니다. 격리는 호스트 운영 체제에 관계없이 작동하는 Redis 이미지를 패키징, 빌드 및 배송할 수 있음을 의미하므로 Docker 내에서 Redis 애플리케이션을 쉽게 개발하고 실행할 수 있습니다. 또한 Docker Desktop은 대규모 팀에 특히 유용한 일관된 로컬 개발 환경 설정을 단순화합니다.
보안:
컨테이너 내부의 Redis를 사용하여 보안 취약점을 스캔할 수 있습니다. Docker는 Docker 이미지의 안전성에 대한 가시성을 제공하는 도구인 Snyk를 사용합니다. Docker 컨테이너를 스캔하고 이미지가 손상된 경우 세부 정보 및 수정 사항을 제공합니다. Docker는 아직 실험 단계이지만 컨테이너 이미지 빌드에 사용되는 모든 종속성을 스캔하기 위한 소프트웨어 재료 명세서(SBOM)를 생성할 수도 있습니다.
유연성
Docker는 대부분의 Unix 기반 및 Windows 운영 체제와 애플리케이션에서 사용할 수 있습니다. 컨테이너를 사용하여 모든 시스템에서 작동하도록 환경에서 소프트웨어를 격리하므로 Redis 앱과 서비스는 인프라에도 불구하고 항상 실행됩니다.
신뢰할 수 있음
Docker를 사용하면 모든 환경에서 컨테이너화된 워크로드를 안정적으로 실행할 수 있습니다. Redis는 Docker 컨테이너가 주기적으로 컨테이너 이미지의 스냅샷을 생성하여 데이터베이스가 불량하거나 손상된 경우 이러한 스냅샷으로 되돌릴 수 있기 때문에 Docker에서 신뢰할 수 있습니다. 컨테이너 내부에 Redis 데이터베이스 파일이 포함된 디렉터리를 탑재하여 Docker 볼륨을 생성할 수도 있습니다.
Docker 볼륨은 모든 형태의 우발적인 데이터 손실로부터 컨테이너를 안전하게 유지하는 데 도움이 됩니다. 그러나 주의할 점은 Docker 볼륨에는 이미지 스냅샷이 포함되어 있지 않다는 것입니다. Redis 데이터베이스 파일의 데이터를 주기적으로 수동으로 저장하거나 백업해야 합니다.
Docker와 함께 Redis를 사용하는 방법
Redis 스토어를 Docker 컨테이너에 넣으려면 대상 환경에 Docker가 있어야 합니다. 다음 지침은 Windows에 Docker를 설치하는 방법을 보여줍니다.
Unix 또는 Unix 기반 OS용 Docker 웹 사이트의 가이드를 따를 수 있습니다. 설치 및 구성 후 Docker 컨테이너 내부에 네트워크를 생성할 수 있습니다. 그런 다음 Redis를 설치하고 데이터베이스를 생성할 수 있습니다. 마지막으로 Redis 데이터베이스에서 작업을 수행할 수 있습니다.
먼저 운영 체제에 Docker를 설치합니다. 필요에 따라 Docker 허브로 이동하여 계정을 만듭니다. 이미지를 만들고 게시하려면 계정이 필요합니다.
계정을 만든 후 Docker Hub에 로그인하고 운영 체제의 최신 버전 Docker Desktop을 다운로드합니다.
설치 절차 후 터미널 창으로 이동하여 Docker 엔진을 실행할 준비가 되었는지 확인하고 다음 명령을 입력합니다.
docker --version
그런 다음 docker-compose --version
입력합니다.
Compose는 애플리케이션 서비스를 구성하는 데 사용하는 YAML 파일을 사용하여 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다.
Docker화된 Redis를 실행하여 아래 코드를 사용하여 Docker 엔진이 실행 중인지 확인할 수 있습니다. 이 예제는 Docker Hub에서 Redis 이미지를 실행하고 이름을 my-redis-container 로 지정합니다.
docker run --name my-redis-container -d redis
로컬에 이미지가 없기 때문에 Docker는 Docker 허브에서 Redis 이미지를 가져옵니다.
이제 Docker Desktop을 열어 Redis 이미지를 가져왔는지 확인할 수 있습니다. 대시보드에서 왼쪽 패널의 이미지를 클릭합니다.
이제 네트워크를 만들 수 있습니다. Docker 드라이버는 브리지 또는 오버레이 기본 제공 네트워크 드라이버를 사용하여 Docker 네트워크를 생성합니다. 타사 네트워크 드라이버를 설치하고 사용할 수도 있습니다.
차이점은 브리지 네트워크는 단일 Docker 엔진 설치에서 격리되는 반면 오버레이 네트워크는 각각 엔진을 실행하는 여러 Docker 호스트에 걸쳐 있다는 것입니다.
유형:
docker network create -d bridge kinsta-demo-network
기본적으로 드라이버를 지정하지 않으면 Docker 엔진을 설치할 때 브리지 드라이버가 자동으로 생성되므로 Docker는 브리지 드라이버를 사용하여 새 네트워크를 생성합니다. 그러나 Docker 실행 명령으로 Docker 컨테이너를 실행하면 이 네트워크를 사용하지 않습니다.
이제 네트워크가 있으므로 Docker 컨테이너 내부에 Redis를 설치합니다. 이렇게 하려면 다음을 입력합니다. docker pull redis
.
Redis 이미지가 올바르게 설치되었는지 확인하려면 다음 명령 중 하나를 실행합니다.
docker images
docker image ls
다음으로 Redis 컨테이너를 만들고 시작합니다. 이렇게 하려면 다음 명령을 실행합니다.
docker run -it –name dev_kinsta_redis_container -d redis
이제 Redis가 컨테이너에서 실행 중인지 확인합니다. 이렇게 하려면 다음을 입력하십시오. docker ps
.
이제 Docker 컨테이너가 실행 중임을 확인했으므로 컨테이너를 네트워크에 추가할 수 있습니다. 유형: docker network connect
.
모든 것이 예상대로 작동하면 다음 단계는 Docker 내에서 실행 중인 Redis 서버가 연결을 수락할 준비가 되었는지 확인하는 것입니다. 그렇게 하려면 docker logs
사용하십시오.
다음으로 Redis 컨테이너에 연결하여 서버에서 명령을 실행하는 방법이 필요하므로 데이터베이스를 생성해야 합니다. 이렇게 하려면 docker exec -it bash
입력합니다. 컨테이너 이름과 컨테이너 ID를 서로 바꿔서 사용할 수 있습니다.
컨테이너에서 CLI를 사용하여 명령을 실행합니다. Redis는 자동으로 Docker 호스트를 설치했습니다. Redis-CLI를 사용하려면 redis-cli
입력합니다.
이렇게 하면 로컬 호스트에서 Redis의 기본 포트에 연결됩니다. 유형: ping
, 응답은 pong
이어야 합니다.
그런 다음 select
입력하여 Redis 서버 내에서 데이터베이스를 선택합니다. 기본 데이터베이스는 0
이지만 db 1
선택합니다.
다음으로 데이터베이스에 데이터를 삽입합니다. Redis SET
명령을 사용합니다. 이렇게 하려면 SET <key> <value>
입력합니다.
예를 들어:
SET mykey "Hello"
동일한 키를 얻으려면 다음을 입력하십시오.
get myKey
키 값을 가져오려면 get
실행하십시오. 이것은 값을 반환합니다. 다음으로 MONITOR
입력하여 Redis 데이터베이스를 모니터링합니다.
마지막으로 CLI를 종료하여 Redis 서버를 중지합니다. exit
두 번 입력하여 CLI와 Redis를 종료합니다.
마지막으로 docker stop
입력하여 Redis 컨테이너 실행을 중지합니다.
Redis와 DevKinsta
DevKinsta를 사용하면 WordPress 사이트를 Redis 데이터베이스에 연결할 수 있습니다. DevKinsta를 사용하면 Redis 애드온이 개체 캐시로 원활하게 작동하여 여러 페이지 로드에서 데이터를 유지합니다. 즉, Redis 애드온을 사용하면 MySQL 데이터베이스를 지속적으로 쿼리하는 대신 캐시를 사용하여 객체를 재사용할 수 있습니다.
DevKinsta를 다운로드하고 설정한 후 컨테이너 내부에 로컬 환경 파일을 생성하는 데 사용하는 Docker Desktop을 종속 항목으로 설치합니다. 이 설정으로 Devkinsta에서 Redis 추가 기능을 구성할 수 있습니다.
따라서 DevKinsta용 Redis 애드온을 보조 소스로 사용하여 기본 데이터베이스의 부하를 줄이고 응답 시간을 늘리며 애플리케이션 작업 속도를 높일 수 있습니다.
이는 앱이 더 많은 로드와 확장을 효율적으로 처리하는 것으로 해석됩니다. 웹 사이트에서 Redis 플러그인을 사용하려면 이 게시물을 확인하세요.
요약
Docker 컨테이너 내에서 Redis를 실행하면 많은 이점이 있습니다. 애플리케이션을 위한 샌드박스 환경을 제공하므로 더 이상 애플리케이션을 배포하는 플랫폼에 신경 쓸 필요가 없습니다. 또한 Docker는 사용 편의성, 유연성 및 높은 안정성을 제공합니다.
보안과 관련하여 Docker 이미지의 안전성에 대한 가시성을 제공하는 도구인 Synk를 사용하여 즉시 보안 취약점을 확인하고 스캔할 수 있습니다. 유연성과 관련하여 Docker는 대부분의 Unix 기반 및 Windows 운영 체제와 애플리케이션에서 작동합니다. 이러한 유연성은 도커화되거나 컨테이너화된 앱 또는 서비스가 OS에 관계없이 항상 실행된다는 것을 의미합니다.
DevKinsta와 함께 Docker 및 Redis 추가 기능을 사용하기 쉽습니다. DevKinsta는 시작할 때 Docker화된 WordPress 사이트를 로컬에서 회전시킵니다. 지금 DevKinsta 및 Redis 애드온을 확인하여 Docker에서 Redis의 기능을 활용하세요.