Docker로 DataBase 관리하기

hsmiK·2024년 3월 14일

공부기록

목록 보기
2/8

🐋 Docker

💡 도커(Docker) 개념

도커는 애플리케이션을 신속하게 구축하고 테스트하여 배포할 수 있도록 도와주는 소프트웨어 플랫폼이다

도커는 다음과 같이 컨테이너 라는 독립된 가상화 공간을 생성한다

컨테이너 안에는 애플리케이션 코드, 라이브러리 등 소프트웨어 코드 패키지를 포함되어 있으며, 이를 통해 개발 환경에 구애 받지 않고 애플리케이션을 신속하게 배포 확장이 가능하다

기존에 존재하던 가상머신에 비해 도커의 컨테이너 환경이 더 가볍고 효율적으로 작동하는 장점이 있다

💡 사용 이유

  1. 일관된 환경에서 개발

도커를 사용하면 개발 환경, 로컬 환경, 운영 환경에서 모두 동일한 이미지 배포가 가능하다

데이터베이스를 구축하고 운영하는 환경을 일관되게 유지할 수 있고 환경 변화가 생기면 유연하게 대처가 가능하다

동일한 컨테이너 이미지를 활용하여 여러 환경에서 동일한 데이터베이스 환경을 구성할 수 있기에 협업 시에 유용하다

  1. 환경 충돌 방지

도커 컨테이너는 호스트 머신과 분리되어 데이터 자원을 효율적으로 분리하고 관리가 가능하다

즉 다른 애플리케이션과 데이터베이스 간의 충돌을 방지하고 안정적인 환경에서 개발이 가능하다

✅ Database

💡 데이터베이스(DB) 개념

데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합

데이터를 구조화하여 관리함으로써 데이터 중복을 막고, 빠른 데이터 연산을 효율적으로 가능하게 한다

💡 DBMS (DataBase Management System)

DBMS 는 데이터베이스를 운영하고 관리하는 역할을 한다

데이터의 저장,검색,수정 등의 작업을 수행하며 사용자나 애플리케이션과 데이터베이스 간의 상호 작용을 조율하는 역할을 한다

Oracle DB MySQl MariaDB

등 운영하는 회사 별로 다양한 형태를 가지고 있다
데이터베이스에 연산을 요청하는 명령어는 조금씩 다르지만 전체적인 틀은 비슷하다

💡 SQL (Structured Query Language)

데이터베이스 연산을 수행하기 위해 사용되는 언어
데이터베이스의 저장,검색,수정 등과 같은 역할을 수행한다

DDL DCL DML 과 같은 명령어로 기능을 수행한다

💻 도커 환경에서 데이터베이스 구축하기

✅ 도커 설치 및 확인

https://www.docker.com/products/docker-desktop/

성공적으로 설치가 되었다면 다음 명령어를 통해 확인

docker -v
// Docker version 25.0.3, build 4debf41

✅ 도커에 mariadb 설치

다음 명령어를 통해 도커 컨테이너에 mairadb 설치

docker pull mariadb

docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb

docker run: docker 컨테이너를 실행

--name mariadb: 실행될 컨테이너의 이름을 지정 (mariadb)

-d: 컨테이너를 백그라운드에서 실행

-p 3306:3306: 호스트의 포트 3306을 컨테이너의 포트 3306에 매핑. MariaDB의 기본 포트인 3306번을 사용하여 외부에서 데이터베이스에 접속할 수 있도록 한다

--restart=always: 컨테이너가 종료되거나 docker 엔진이 시작될 때 컨테이너가 자동으로 다시 시작되도록 설정

-e MYSQL_ROOT_PASSWORD=root: 환경 변수를 설정. MySQL의 루트 사용자 비밀번호를 "root"로 설정하였음

mariadb: 실행할 이미지의 이름. 여기서 MariaDB 이미지를 사용

설치 시 문제 해결

나의 경우 처음 도커 컨테이너를 구축할 때 3306 포트가 이미 사용 중 이라는 오류 코드가 생성되었다..

따라서

  1. cmd를 통해 3306 포트에 어떤 프로세스가 사용 중인지 확인하고
netstat -ano | findstr 3306

3306 포트에 이전에 설치한 mysql 이 설치되어 해당 프로그램이 3306 포트를 사용하고 있어서 실행이 안된 것을 확인했다

  1. 확인 후 3306 포트를 사용하는 프로세스를 제거
taskfill /pid 14448 /f
  1. 다시 정상적으로 설치 시도 -> 성공

✅ DBMS 실행

mariadb가 설치되어 있는 컨테이너로 접속하여

docker exec -it mariadb /bin/bash
mariadb -u root -p

후 초기 비밀번호를 root로 설정했기 때문에 root 입력

<성공 화면>

✅ 데이터베이스 구축

컨테이너의 DB에 접근하여 데이터베이스 확인하고 새로 만들기

Coffee 라는 database 를 새로 만들었고 이제 이 데이터베이스에 접근하여 여기에 간단하게 테이블을 생성하고 데이터 삽입,조회,삭제 작업을 진행해보자

  1. 해당 데이터베이스로 접근 방법
USE Coffee;
  1. CREATE

접근한 데이터베이스에 새로운 테이블을 생성할 때 사용한다

// 테이블 생성
CREATE TABLE menu (
	id INT,
    name VARCHAR(30),
	price INT
);

  1. INSERT

생성한 테이블에 원하는 값을 입력할 때 사용한다

// 데이터 값 입력
INSERT INTO [테이블명] (컬럼명1,컬럼명2,....) VALUES (컬럼명1데이터,컬럼명2데이터,...) 

  1. SELECT

select 문은 전체 데이터를 조회하거나
where 문을 활용하여 특정 데이터를 조회할 때 사용한다

// 해당 컬럼의 데이터 조회
SELECT [컬럼명] FROM [테이블]

// 전체 컬럼 데이터 조회
SELECT * FROM [테이블] 

// 특정 데이터 조회
SELECT [컬럼명] FROM [테이블] WHERE (조건문)

  1. UPDATE

UPDATE는 테이블에서 데이터를 업데이트 하고 싶을 때 사용한다

UPDATE [테이블명] SET [컬럼명]=[수정하고싶은값] WHERE (조건)

  1. DELETE

테이블에서 레코드를 삭제한다

// 조건에 해당하는 레코드를 삭제 
DELETE FROM [테이블명] WHERE (조건)

//전체 테이블 삭제
DELETE FROM [테이블명] 

✅ 앞으로 무엇을 할까

  1. 도커 환경에 익숙해지기
  2. SQL 활용 방법에 더 익숙해지기
  3. node.js에 db 연동방법 학습 / 페이지에 db 불러오기 학습

출처 : https://www.docker.com/resources/what-container/

profile
반갑습니다

0개의 댓글