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