728x90
failed to start docker container: Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:54322 -> 127.0.0.1:0: /forwards/expose returned unexpected status: 500
Try rerunning the command with --debug to troubleshoot the error.

 

에러 메세지에 대해 찾아보니 이미 사용하고 있는 포트여서 발생하는 현상이라는 글들이 있어 netstat -ano 명령어를 통해 사용중인 포트를 확인하고 원하는 포트에서 실행되고 있는 프로그램의 PID를 알아내어 종료시키면 된다는 글들이 있었다.

 

하지만 나의 경우 해당 명령어를 실행해도 3000번 포트에서 실행되고 있는 프로그램이 존재하지 않았다.

 

좀더 서칭을 해본 결과 어떤 블로그에서 해결방안을 찾을 수 있었다.

 

netsh interface ipv4 show excludedportrange protocol=tcp

 

위 명령어를 입력하면

 

다음과 같이 포트 제외범위가 나오는데 이 범위안에 사용하려고 하는 포트가 포함되어있으면 제목의 오류메시지와 함께 오류가 발생한다. 나는 54322 포트가 포함이 되어있었다. 

 

 

해결!

 

cmd를 관리자 권한으로 실행시킨 뒤

net stop winnat

 

이 명령어를 수행하면 54322 포트 사용 가능하다~~

 

728x90
728x90

개요

WSL2 Ubuntu 환경에서 Spring Boot 프로젝트를 빌드하던 중 다음과 같은 오류가 발생했다. 

$ docker-compose up -d
Error response from daemon: client version 1.42 is too old. 
Minimum supported API version is 1.44, please upgrade your client to a newer version

환경 정보

  • OS: WSL2 Ubuntu 24.04
  • Docker Desktop: 27.5.1 (Windows)
  • Docker CLI (WSL): 1.42 (구버전)
  • Spring Boot: 3.5.4

원인

Docker Desktop과 WSL CLI 버전 불일치

 

WSL + Docker Desktop 환경에서는 두 가지 Docker 컴포넌트가 존재한다.

  1. Docker Desktop (Windows): 최신 버전 (27.5.1)
    • 실제 컨테이너를 실행하는 엔진
  2. Docker CLI (WSL): 구버전 (1.42)
    • WSL에서 명령어를 입력받는 클라이언트
  • 문제는 WSL의 Docker CLI가 오래되어 Docker Desktop의 최신 API(1.44)와 통신할 수 없다는 것이었다.

해결

Docker CLI 업그레이드

WSL 내부의 Docker CLI를 최신 버전으로 업데이트한다.

 

1. 기존 Docker 패키지 제거

  • 오래된 Docker 패키지들을 제거하여 깨끗한 설치 환경을 만든다.
sudo apt-get remove docker docker-engine docker.io containerd runc

 

2. 필수 패키지 설치 -

  • ca-certificates: 안전한 HTTPS 연결을 위한 인증서
  • curl: 파일 다운로드 도구
  • gnupg: 암호화 키 관리
  • lsb-release: Ubuntu 버전 정보 확인
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

 

3. Docker GPG 키 추가

  • Docker 공식 저장소의 진위를 확인하기 위한 보안 키를 설치한다.
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

4. Docker 저장소 추가

  • Ubuntu에게 Docker를 다운로드할 공식 저장소를 알려준다.
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

5. 최신 Docker CLI 설치

sudo apt-get update
sudo apt-get install -y docker-ce-cli

 

6. 설치 확인 및 실행

docker --version

docker compose up -d  # 주의: 'docker-compose'가 아님
docker ps
728x90
728x90

도커를 공부하다보니 궁금한 점이 생겼다. 원하는 어플리케이션을 도커에 띄울 때 dockerFile을 사용하기도 하고 docker-compose.yml을 사용하기도 한 다. 왜 둘이 분리해놓은 것일까? 다른 점은 무엇일까?

구글링한 결과 다음과 같은 글을 볼 수 있었다.
Difference between Docker Compose Vs Dockerfile | dockerlabs

해석하면 다음과 같다.

Dockerfile은 사용자가 이미지를 어셈블하기 위해 호출할 수 있는 명령이 포함된 간단한 텍스트 파일인 반면, Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다.

Docker Compose는 앱을 구성하는 서비스를 docker-compose.yml에 정의하여 격리된 환경에서 함께 실행할 수 있습니다. docker-compose up을 실행하여 하나의 명령으로 앱을 실행합니다.
프로젝트의 docker-compose.yml에 빌드 명령을 추가하면 Docker compose는 Dockerfile을 사용합니다. Docker 워크플로는 생성하려는 각 이미지에 적합한 Dockerfile을 빌드한 다음 compose를 사용하여 build 명령을 사용하여 이미지를 조합하는 것이어야 합니다.

 

  • Dockerfile
    • 목적
      • 이미지를 어셈블하기 위해 호출할 수 있는 명령이 포함된 간단한 텍스트 파일
      • 단일 Docker 이미지를 빌드하기 위한 명세서
      • 이 파일에는 베이스 이미지 선택, 추가 파일 복사, 환경 변수 설정, 필요한 소프트웨어 설치, 컨테이너 실행 시 실행할 명령어 등 이미지를 생성하기 위한 모든 명령어가 포함
    • 기능
      • Docker 이미지를 생성
      • 이 이미지는 애플리케이션과 그 애플리케이션을 실행하는 데 필요한 모든 종속성을 포함
      • 이미지는 컨테이너를 생성하는 데 사용
    • 사용 예시
      • 보통 애플리케이션 개발 과정에서 특정 서비스나 애플리케이션의 빌드 방식을 정의할 때 사용
      • Node.js 애플리케이션을 위한 Dockerfile은 Node.js 환경을 설정하고 애플리케이션 코드를 이미지 내부로 복사하는 명령어를 포함할 수 있다.
  • Docker Compose
    • 목적
      • 앱을 구성하는 서비스를 docker-compose.yml에 정의하여 docker-compose up을 실행하여 하나의 명령으로 앱을 실행
      • 즉, 앱이 실행되는 동안 컨테이너를 관리하는 역할
      • 앱이 시작되면 컨테이너를 띄우고 앱이 실행되는 중에 컨테이너가 종료되면 다시 띄워줌
      • 여러 Docker 컨테이너를 정의하고 실행하기 위한 도구인 Docker Compose의 설정 파일
      • 이 파일에서는 애플리케이션을 구성하는 여러 서비스(예: 데이터베이스, 백엔드 애플리케이션, 프론트엔드 애플리케이션 등)를 정의하고, 각 서비스에 대한 이미지, 포트 매핑, 볼륨 마운트, 네트워크 설정 등을 지정
    • 기능
      • 여러 컨테이너의 배포 및 관리를 단순화
      • docker-compose 명령어를 사용하여 모든 서비스를 한 번에 시작, 중지, 재구축할 수 있다.
    • 사용 예시
      • docker-compose.yml은 마이크로서비스 아키텍처 또는 여러 종속성을 가진 복잡한 애플리케이션을 로컬 개발 환경이나 테스트 환경에서 실행할 때 주로 사용
      • 예를 들어, 웹 애플리케이션, 관련 데이터베이스, 그리고 그것들을 연결하는 네트워크를 동시에 정의하고 실행할 수 있다.
  • docker-compose.yml 파일에서 Dockerfile의 경로를 통해 Dockerfile에 정의된 이미지를 관리할 수도 있다.
  • 그래서 docker-compose.yml에서 빌드에 대한 내용이 어떻게 나타나 있는지 찾아보게 되었고 docker 공식 홈페이지에서 이런 내용을 찾아 볼 수 있었다.

Legacy versions | Docker Docs

As with docker run, options specified in the Dockerfile, such as CMD, EXPOSE, VOLUME, ENV, are respected by default - you don’t need to specify them again in docker-compose.yml.


Dockerfile에서 나타난 CMD, EXPOSE, VOLUME, ENV에 관한 내용에 따라서 빌드가 되기 때문에 이에 관련된 내용은 docker-compose.yml에서 따로 나타낼 필요는 없다.

 

  • docker-compose.yml에서 Dockerfile의 경로 지정
version: "3.9"
services:
  webapp:
    build: ./dir

 

  • Dockerfile의 args아래에 지정된 경로가 있는 경우
version: "3.9"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1

 

 


한 줄 정리


Dockerfile : 이미지 빌드
docker-compose.yml : 앱이 실행되는 동안 컨테이너 관리

728x90
728x90

컨테이너

컨테이너란?

  • 어떤 환경에서나 실행하기 위해 필요한 모든 요소(의존성)를 포함하는 소프트웨어 패키지.
  • 이를 통해 전체 기능을 유지하면서 컨테이너화된 애플리케이션을 환경(개발, 테스트, 프로덕션 환경 등) 간에 쉽게 이동할 수 있다. 

컨테이너 = 마법 상자

  • 내 물건과 다른 사람의 물건이 한 군데 뒤섞이면 내 것을 찾기 힘들다.
  • 그런데 어떤 마법 상자는 A는 A의 물건만 들어있고, B는 B의 물건만 넣어서 관리해준다.
  • 마법 상자는 어디서든 똑같이 열 수 있어서 집에서든, 카페에서든 상자를 열면 내 물건이 그대로 들어있다. 게다가 가벼워서 들고 다니기도 편하다!
  • 컴퓨터에서도 프로그램을 실행할 때, 이 상자를 사용하면 어디서든 같은 환경에서 프로그램을 실행할 수 있다.
    • 컨테이너 = 마법 상자
    • 컨테이너 안에 들어 있는 프로그램 또는 데이터 = 내 물건
    • Docker = 상자를 만들기 위한 모든 도구를 제공해주는 것
    • Kubernates = 상자가 많아지면 관리가 필요한데 이 상자를 필요한 곳에 효율적으로 배치하고 관리해주는 것 

 

왜, 사용할까?

  • 개발 환경의 일관성
    • 호환되지 않는 환경으로 인해 발생하는 충돌을 방지하고 시스템 전반에서 일관된 성능을 얻을 수 있다.
      • “내 컴퓨터에서는 되는데?” 문제를 해결해준다.
    • 개발자는 다양한 서버 환경에 상관 없이 애플리케이션 자체에 집중할 수 있다.
  • 가상 머신에 비해 작은 크기와 빠른 속도
    • 컨테이너는 시스템 OS 커널을 공유하므로 VM과 달리 애플리케이션마다 OS 인스턴스를 둘 필요가 없다.
      • 즉, 부팅할 운영 체제가 없기 때문에 빠르게 실행할 수 있다.
  • 이식성
    • 컨테이너가 모든 종속 항목을 함께 전달하므로, 한 번 만든 소프트웨어는 재구성 없이 어떤 환경에서든 실행할 수 있다.
  • 모듈성
    • 컨테이너를 더 작은 모듈로 나누어 개별 컨테이너를 유연하게 발전시키고 확장, 재사용할 수 있다.
  • 결함 격리
    • 한 컨테이너의 장애는 다른 컨테이너의 지속적인 운영에 영향을 주지 않기 때문에 다른 컨테이너의 가동 중단 없이 한 컨테이너 내의 문제를 식별하고 정정할 수 있다. 

 

어디서 사용할까?

  • 개발자는 로컬 환경에서 컨테이너를 사용해 애플리케이션을 개발, 테스트할 수 있다.
    • 이때 컨테이너 안에서 애플리케이션이 실행되므로 개발 환경이 프로덕션 환경과 정확히 일치하게 된다.
  • 마이크로서비스 아키텍처
    • 마이크로서비스 아키텍처?
      • 애플리케이션을 작고 독립적인 부분으로 나누어 개발하는 것
    • 각 마이크로서비스를 개별 컨테이너에 분류해 개발자들은 전체 애플리케이션을 다시 작업하지 않고 독립적으로 업데이트할 수 있다.
  • CI/CD (지속적인 통합, 지속적인 배포)
    • 빌드, 테스트, 배포될 때마다 일관된 환경에서 실행하므로 안전성이 높아진다. 

 

Docker

  • 개발자가 컨테이너를 빌드, 배포, 실행, 업데이트, 관리할 수 있는 오픈 소스 플랫폼

왜 굳이 도커를 사용해 컨테이너를 만들까?

  • Linux 및 기타 OS에서 기본 제공하는 기능을 직접 사용하면 개발자가 Docker 없이 컨테이너를 생성하는 것도 가능하다. (리눅스 컨테이너 기술)
    • 하지만 Docker를 사용하면 더 빠르고 편리하며 안전하게 컨테이너를 만들 수 있다.
  • 이식성
    • 다양한 OS에서 실행될 수 있어 어느 환경에서나 동일하게 실행할 수 있다.
    • 클라우드 환경과 온프레미스 환경 간의 이동성도 높여준다.
  • 버전 관리와 재현성
    • 도커 이미지는 버전 관리가 가능해 어떤 시점의 애플리케이션 상태도 재현할 수 있다. 

 

구성 요소

  • 도커 엔진
    • 시스템의 핵심으로, 클라이언트 서버 아키텍처를 사용하는 애플리케이션이며 호스트 시스템에 설치된다.
    • 도커 데몬(실행 파일)이다. REST API를 통해 docker 명령어를 클라이언트와 통신한다.
    • 도커 엔진은 아래 도커 요소들을 포함한다.
  • 도커 파일(Dockerfile)
    • 모든 도커 컨테이너는 도커 컨테이너 이미지의 빌드 방법에 관한 지시사항이 포함된 단순 텍스트 파일로 시작한다.
    • 도커 파일은 도커 이미지 생성 프로세스를 자동화한다.
      • CLI 명령어 리스트로 이루어져있다.
  • 도커 이미지
    • 실행 가능한 애플리케이션 소스 코드와 이 애플리케이션이 컨테이너 형태로 실행되는 데 모든 툴, 라이브러리 및 종속성이 포함되어 있다.
    • 도커 이미지를 실행하면 컨테이너의 인스턴스가 된다.
    • 도커 이미지를 완전히 새로 빌드하거나 공통 저장소에서 이미지를 가져오기도 한다.
  • 도커 컨테이너
    • 도커 이미지의 현재 실행 중인 라이브 인스턴스이다.
    • 독립된 컨테이너는 네트워크를 통해 서로 통신할 수 있다.
  • 도커 허브
    • 도커 이미지를 공유하는 저장소

 

작동 과정

  1. 도커 파일 작성
    • Dockerfile은 애플리케이션을 실행하는 데 필요한 모든 지시사항을 포함한다.
      • 사용할 기반 이미지, 추가할 파일, 실행할 명령어 등이 포함된다.
  2. 이미지 빌드
    • Dockerfile을 사용해 도커 이미지를 빌드한다.
    • 도커 클라이언트는 Dockerfile에 명시된 지시사항을 순서대로 실행해 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 이미지를 생성한다.
  3. 컨테이너 생성 및 실행
    • 빌드된 이미지를 기반으로 컨테이너를 생성하고 실행한다.
    • 컨테이너를 격리된 환경에서 실행해 독립적으로 동작하도록 한다. 

 

정리

 

Container : 한 대의 서버에서 여러 개의 소프트웨어를 안전하고 효율적으로 운영 가능

Docker : 컨테이너를 관리하기 위한 도구로 일종의 프로그램

쿠버네티스 : 서버가 여러 대 있는 환경에서 각각의 서버의 도커에게 지시해주는 오케스트레이션 도구

 

728x90
728x90

* Docker-Desktop을 이용해 MySQL DBMS를 실행

프로젝트 진행 중 도커에서 레디스와 mysql 설치 과정에 대해서 정리할려고 한다.

일단 나는 도커를 사용해 DB를 사용할려고 한다. 왜 도커를 사용해서 디비를 사용하냐고 물어보면 

도커(Docker)를 사용하는 이유는 무엇일까? (velog.io)

 

도커(Docker)를 사용하는 이유는 무엇일까?

도커를 사용하면 개발 환경을 이미지화 시키고 해당 이미지를 통해 개발 및 배포 환경을 쉽게 컨테이너화 시켜 구축할 수 있다. 이런 도커를 사용하는 이유에 대해 간단히 알아보자.개발을 하다

velog.io

이 분의 글을 읽으면 좋을 것 같다. 협업 과정에서 고충을 겪을 환경설정의 문제를 해결해준다는 점! 

그럼 첫 번째는 MySQL 설치부터 할 것이다.

아래에 있는 각 단계를 따라오면 된다.

 

도커에서 mysql을 사용하기 위해서 할 일은 다음 4가지이다.

  • Windows를 모두 업데이트 한다.
  • Hyper-V(가상화) 또는 WSL2를 이용해 설치를 한다.
  • Windows 버전에 따라서 설치가 어려울 수도 있다. (Home버전?)
  • Docker-Desktop을 설치한다. → 설치만 ! 실행은 나중에

 

1. 도커 설치

  • Windows용 Docker-Desktop 다운로드

Docker Desktop: The #1 Containerization Tool for Developers | Docker

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

도커에서 제공해주는 메뉴얼도 있다.

Install Docker Desktop on Windows | Docker Docs

 

Install Docker Desktop on Windows

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

 

2. Hyper-V(가상화) 또는 WSL2를 이용해 설치

  • 나는 윈도우에서 사용중이라 이 과정을 걸쳤다.
  • 윈도우 검색에서 “기능”이라고 입력하면 윈도우 기능 켜기/끄기가 보여진다.
  • 여기에서 ‘Hyper-V’ 또는 ‘Windows 하이퍼바이저 플랫폼’을 선택한다.
  • Hyper-V는 하이퍼바이저(Hypervisor)라고 한다. 하이퍼바이저는 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어이다.
  • 선택 → 확인 → 윈도우를 재시작

  • 하이퍼바이저가 실행되려면 BIOS에서 가상화 관련된 옵션이 사용가능해야한다.
  • PC마다 BIOS메뉴 구성은 다를 수 있다.
  • 자신의 메인보드 이름으로 구글에서 검색한다.
  • 보통 BIOS는 컴퓨터가 켜지기 전 DEL , F2 키를 빠르게 입력하면 진입 가능하다. 컴퓨터마다 진입 버튼은 다를 수 있으니 찾아봐야 함

 

3. WSL2 설치

  • 관련메뉴얼이다

WSL 설치 | 마이크로소프트 런 (microsoft.com)

  • Windows의 PowerShell을 관리자 권한으로 실행 후 아래 명령어 2줄을 입력해서 WSL을 활성화 한다.
# WSL2 설치
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 이후 윈도우를 재시작한다.

 

3.1. WSL2 Linux 커널 업데이트

  • 본인 PC의 CPU 아키텍처에 맞춰 설치 파일을 다운로드 한다. 보통 x64용

x64 : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

ARM64 : https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi

  • Windows의 PowerShell을 관리자 권한으로 실행 후 다음 명령어 실행
# WSL2 Linux 커널 업데이트
> wsl --set-default-version 2

 

 

WSL2 명령 모음

# 사용가능한 Linux 배포판 리스트 보기
> wsl --list --online

# 특정 리눅스 배포판 설치하기 (Linux를 사용해보고 싶으면 나중에 설치해보기)
> wsl --install --distribution <Distribution Name>
# ex
> wsl --install --distribution Ubuntu

# 설치된 Linux 배포판 리스트
> wsl --list --verbose

# 특정 리눅스 배포판 삭제하기
> wsl --unregister <Distribution Name>
# ex
> wsl --unregister ubuntu

 

3.2 도커 실행

  • 이전에 다운로드한 Docker Desktop Installer.exe 파일을 실행하면 WSL2 환겨에서 실행할 것인지 묻는 checkbox가 보일 수 있다. (권장)
  • WSL은 Hyper-V 기반이 아닌데, WSL2는 Hyper-V 기반 !
  • 설치 완료 후, PC를 재시작한다.
  • 이후, docker-desktop을 실행하면 처음 보여지는 화면 동의(Accept)한다.
  • 첫 번쨰 항목을 선택하고 Finish 버튼을 클릭한다.
  • 윈도우가 재시작할 때 docker desktop이 자동으로 재시작되길 원한다면 첫 번째 체크박스를 설정한다. (Start Docker Desktop when you sign in to your computer)

 

3.3 WSL에 설치된 배포본을 확인

  • wsl에 docker-desktop이 설치된 것을 확인할 수 있다.
  • docker-desktop을 설치하고 실행하면 WSL2에 docker가 제공하는 리눅스가 설치된다.
  • 이 리눅스가 docker-desktop이며, docker로 실행되는 이미지들은 해당 리눅스 커널 위에서 동작한다고 보면 된다.
# WSL에 설치된 배포본 확인
> wsl --list --verbose

ex

 

 

 

3.4  MySQL DBMS를 실행하기 위한 docker-compose.yml 파일을 준비

  • Windows 10
    • c:/docker/mysql 폴더에 docker-compose.yml 파일을 작성
    • docker-compose.yml
version: "2"

services:
  vacation-db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "루트계정암호" # "root1234"
      MYSQL_DATABASE: "database이름"     # "examplesdb"
      MYSQL_USER: "아이디"               # "dms2756"
      MYSQL_PASSWORD: "암호"             # "123456789"
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./database/init/:/docker-entrypoint-initdb.d/
      - ./database/datadir/:/var/lib/mysql
    platform: linux/x86_64
    ports:
      - 3306:3306

 

3.5 docker-compose up -d

  • yml 파일이 있는 곳에서 터미널을 열고 MySQL 서버를 실행하는 명령어를 입력한다.
# MySQL 서버 실행
> docker-compose up -d
  • -d 옵션은 백그라운드로 실행하는 옵션이다.
  • 파일 내 volumes 설정은 Docker 안에서 실행되는 리눅스의 /docker-entrypoint-initdb.d/ , var/lib/mysql 폴더가 docker-compose.yml 파일이 원래 있는 경로에 database 폴더를 생성하고, 그 아래의 init, datadir 에 생성되도록 한다.
  • 원래 docker는 종료되면 docker에서 실행된 내용들은 모두 사라진다.
  • 이렇게 docker를 실행하는 컴퓨터 쪽의 디스크와 마운트 시킴으로써 사라지지 않고 계속 사용할 수 있게 할 수 있다.
  • # docker-compose.yml의 일부 volumes: - ./database/init/:/docker-entrypoint-initdb.d/ - ./database/datadir/:/var/lib/mysql

 

docker-compose.yml 파일이 있는 경로

  • docker-compose.yml 파일이 있는 곳에 database 폴더가 있는 것을 볼 수 있다.
  • 해당 폴더 안에 mysql의 data가 저장된다.
  • docker-compose down 명령을 실행하면 mysql 서버가 종료된다. database 폴더를 삭제하고 다시 실행하면 모든 데이터가 삭제된다. (주의)
  • docker ps 명령으로 실행되는 이미지에서 container id를 복사 후 mySQL 이미지에 접속한다.
> docker ps
# mysql 접속
> docker exec -it {복사한conainterID} /bin/bash

 

 

그럼 끝났다.

 

 


* Docker-Desktop을 이용해 Redis를 실행 

위의 과정을 통해 도커가 설치되어 있다는 가정 하에 아래를 진행한다.

 

 

1. 도커 폴더 아래 redis 폴더를 생성한다.

2. redis 폴더 아래 docker-compose.yml 작성한다.

services:
  redis:
    image: redis:latest # 최신 Redis 이미지를 사용
    container_name: redis
    command: ["redis-server", "--requirepass", "{password}", "--appendonly", "yes"]
    ports:
      - "6379:6379" # 로컬의 6379 포트를 Redis 컨테이너의 6379 포트에 매핑
    volumes:
      - ./redis-data:/data # 로컬의 'redis_data' 볼륨을 컨테이너의 /data 디렉토리에 매핑하여 데이터 영속성 유지

volumes:
  redis-data:

3. 터미널을 열어서 아래의 명령어를 입력한다.

# 레디스 이미지 가져오기
> docker pull redis

# 이미지 가져왔는지 확인
> cker images

# 레디스 실행
> docker compose up -d

> docker ps 
# 레디스 컨테이너 접속
> docker exec -it {레디스 컨테이너 아이디} redis-cli

# 레디스 암호
> AUTH {password} 

# 모든 키 검색
> KEYS * 

# 키 값 출력
> KEYS refreshToken:* 

# 해당 키에 대한 값 출력
> GET {키 값} 

# 해당키의 유효 시간 출력
> TTL {키 값} 

# 해당키 삭제
> DEL {키 값}

 

 

 

그럼 레디스도 잘 설치될 것이다.

728x90

+ Recent posts