본문 바로가기
MYSQL

Docker을 이용해 MYSQL 설치

by 융디's 2024. 5. 4.
728x90
Docker을 이용해 MYSQL 설치

Docker을 이용해 MYSQL 설치

@2024.04.30

기존에는 이미 여러 프로그램이 설치되어 있어 새로운 프로그램을 추가할 때 충돌이 발생할 수 있다.

특히 DB와 같이 시스템에 영향을 미치는 프로그램은 기존 소프트웨어와 충돌 가능성이 높다.

직접 데이터베이스를 설치할 경우 설정 변경 과정에서 오류가 발생할 수 있고, 심각한 경우 운영체제를 다시 설치해야 할 수 있다.

하지만 Docker와 같은 컨테이너 기술을 사용하면 각 프로그램이 독립적인 환경에서 실행되므로
기존 시스템과의 충돌 문제를 피할 수 있다.

Docker-Desktop환경 구성하기

  • 용량이 큰 거 다운로드하기
  • window 기능 → 윈도우 11은 가상 머신 플랫폼 체크
  • 윈도우는 다른 운영체제와 다르게 Hyper-V 위에서 도커가 동작한다.

Docker 설치하기 전 윈도우에서 해야 할 설정

💡
윈도우에서 Docker 컨테이너를 실행하기 위해 반드시 Hyper-V를 활성화해야 한다.
  • Hyper-V
    • Microsoft 사에서 개발한 가상화 기술
    • Windows 운영체제 위에 설치되어 가상 머신을 실행하고 관리
    • Linux는 이미 Linux 커널에 가상화 지원이 내장되어 있기 때문에 이런 기능이 필요 없다.
  • Hyper-V 활성화 방법
    • 검색 창에 “Windows 기능 켜기/끄기”를 검색
    • 가상 머신 플랫폼”을 켠다.
    • 윈도우 재시작
  • Hyper-V가 실행되려면 BIOS에서 가상화 관련 옵션을 사용함으로 설정해야 한다.
    • F2, DEL 키를 빠르게 입력하면 BIOS에 진입 가능하다.

WSL2(Windows Subsystem for Linux 2) 설치하기

💡
WSL의 업그레이드 버전으로, Hyper-V에서 동작하며,
Hyper-V 가상화 기술을 사용하여 리눅스 커널을 호스트 시스템 위에서 실행한다.
  • WLS2는 리눅스 커널을 Hyper-V 가상 머신 안에서 실행한다.
  • WSL(Windows Subsystem for Linux)
    • Microsoft 사에서 개발한 Linux 용 Windosw 하위 시스템으로, 윈도우 운영체제 위에서 리눅스 실행 환경을 제공
    • Windsows 커널 위에서 리눅스 커널을 직접 실행
    • WSL 사용 시 윈도우 사용자는 유닉스 기반의 리눅스 명령 줄 도구와 유틸리티를 사용 가능
  • 설치 방법
    1. Windos의 PowerShell관리자 권한으로 실행
    1. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 입력
      • 윈도우에서 Windows Subsystem for Linux (WSL)을 활성화하기 위한

        DISM (Deployment Image Servicing and Management) 명령어
    1. dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 입력
      • 윈도우에서 가상 머신 플랫폼을 활성화하는 DISM 명령어
    1. 윈도우 재시작

Docker-Desktop 설치

💡
  1. Docker Desktop Installer.exe 파일을 실행Configuration에 나오는 항목은 모두 체크
  1. 설치 완료 시 PC 재 시작
  1. Docker-Desktop 실행 후 동의 클릭
  1. 첫 번째 항목 선택하고 Finish 버튼 클릭
  • 이후 특정한 에러가 안 뜨면, WSL2에 Docker-Desktop이 정상 설치된 것
    • Docker-Desktop을 설치하고 실행하면 WLS2에 Docker가 제공하는 리눅스가 설치된다.
    • 이 리눅스가 바로 docker-desktop
    • docker로 실행되는 이미지들은 해당 리눅스 커널 위에서 동작한다고 생각

    Docker-Desktop에 MySQL 설치

    1. 원하는 경로 생성하기
      • C:/docker/mysql
    1. 생성된 경로에 MySQL DBMS를 실행하기 위한 docker-compose.yml 파일 생성하기
      • docker-compose는 여러 개의 도커 컨테이너를 정의하고 실행하기 위한 도구
      • 주로 멀티 컨테이너 애플리케이션을 관리하고 배포하는 데 사용
        version: "2"
        
        services:
          vacation-db:
            image: mysql
            restart: always
            environment:
              MYSQL_ROOT_PASSWORD: "루트계정암호"
              MYSQL_DATABASE: "database이름"
              MYSQL_USER: "아이디"
              MYSQL_PASSWORD: "암호"
            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
        • services
          • 각 컨테이너 서비스를 정의
          • 각 서비스는 도커 이미지를 기반으로 하며, 컨테이너를 실행하는데 필요한 구성 지정
          • ex) 웹 서버, 데이터베이스, 백엔드 애플리케이션 등이 서비스로 정의
        • image
          • 각 서비스의 도커 이미지를 지정
          • 이 이미지는 도커 허브에서 가져오거나, 로컬에 빌드 된 것을 사용
        • ports
          • 컨테이너가 노출될 포트를 지정하며, 이를 통해 외부에서 애플리케이션에 액세스 가능
          • 3306:3306는 호스트의 3306포트와 컨테이너의 3306 포트를 매핑한다는 뜻
            • 만약 포트 충돌 시 앞에 호스트 포트인 3306을 변경해 준다.
        • volumes
          • 호스트 및 컨테이너 간 파일 시스템의 공유된 볼륨 정의
        • enviroment
          • 컨테이너에 전달할 환경 변수 설정
          • 컨테이너 동작을 구성할 수 있다.
    1. 생성된 경로에서 콘솔 창에 docker-compose up -d 명령어 입력하기
      • 현재 폴더의 docker-compose.yml 파일을 읽어서 MySQL 서버를 실행하는 명령어
      • -d 옵션은 백그라운드로 실행하는 옵션
      • 실행이 완료되면 docker-compose.yml이 있는 경로에 database 폴더가 생성되며, 그 아래 init, datadir이 실행된다.
        • 원래 docker는 종료되면 docker에서 실행된 내용들은 모두 사라지지만, dockekr를 실행하는 컴퓨터 쪽의 디스크와 마운트함으로써 사라지지 않고 계속 사용할 수 있게 된다.
      • docker-compose down 명령어 실행 시 mysql 서버가 종료
        • database 폴더를 삭제하고 다시 실행하면, 모든 데이터가 삭제되게 된다.
    1. 실행 중인 도커 이미지 접속하기
      • docker ps 명령어
        • 실행되는 이미지 조회 - 컨테이너 ID 확인
      • docker exec -it [컨테이너 ID] 실행할 프로그램 명령어
        • docker exec -it c2e50342105a /bin/bash 입력

    IntelliJ에서 Database 이용하기

    1. 데이터베이스 아이콘 클릭 → + 버튼 클릭 → Data Source 클릭 → MySQL 클릭
    1. 빨간 박스 안에 내용 채우기 → Test Connection을 눌러 정상 연결로 나오면 성공 → OK 클릭
    1. DB를 연결을 완료하면, 기존에 준비한 스키마가 있다면 스키마를 추가해서 사용하면 된다.

    728x90

    'MYSQL' 카테고리의 다른 글

    [내장 함수] 숫자형 함수  (0) 2024.05.05
    [내장 함수] 문자형 함수  (0) 2024.05.05
    SELECT절  (0) 2024.05.05
    MySQL DB/사용자 생성 및 사용자 권한 설정  (0) 2024.05.04
    데이터베이스  (0) 2024.05.03