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

도커는 다음과 같이 컨테이너 라는 독립된 가상화 공간을 생성한다
컨테이너 안에는 애플리케이션 코드, 라이브러리 등 소프트웨어 코드 패키지를 포함되어 있으며, 이를 통해 개발 환경에 구애 받지 않고 애플리케이션을 신속하게 배포 확장이 가능하다
기존에 존재하던 가상머신에 비해 도커의 컨테이너 환경이 더 가볍고 효율적으로 작동하는 장점이 있다
도커를 사용하면 개발 환경, 로컬 환경, 운영 환경에서 모두 동일한 이미지 배포가 가능하다
데이터베이스를 구축하고 운영하는 환경을 일관되게 유지할 수 있고 환경 변화가 생기면 유연하게 대처가 가능하다
동일한 컨테이너 이미지를 활용하여 여러 환경에서 동일한 데이터베이스 환경을 구성할 수 있기에 협업 시에 유용하다
도커 컨테이너는 호스트 머신과 분리되어 데이터 자원을 효율적으로 분리하고 관리가 가능하다
즉 다른 애플리케이션과 데이터베이스 간의 충돌을 방지하고 안정적인 환경에서 개발이 가능하다
데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합
데이터를 구조화하여 관리함으로써 데이터 중복을 막고, 빠른 데이터 연산을 효율적으로 가능하게 한다
DBMS 는 데이터베이스를 운영하고 관리하는 역할을 한다
데이터의 저장,검색,수정 등의 작업을 수행하며 사용자나 애플리케이션과 데이터베이스 간의 상호 작용을 조율하는 역할을 한다
Oracle DB MySQl MariaDB
등 운영하는 회사 별로 다양한 형태를 가지고 있다
데이터베이스에 연산을 요청하는 명령어는 조금씩 다르지만 전체적인 틀은 비슷하다
데이터베이스 연산을 수행하기 위해 사용되는 언어
데이터베이스의 저장,검색,수정 등과 같은 역할을 수행한다
DDL DCL DML 과 같은 명령어로 기능을 수행한다
https://www.docker.com/products/docker-desktop/
성공적으로 설치가 되었다면 다음 명령어를 통해 확인
docker -v
// Docker version 25.0.3, build 4debf41
다음 명령어를 통해 도커 컨테이너에 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 포트가 이미 사용 중 이라는 오류 코드가 생성되었다..
따라서
netstat -ano | findstr 3306
3306 포트에 이전에 설치한 mysql 이 설치되어 해당 프로그램이 3306 포트를 사용하고 있어서 실행이 안된 것을 확인했다
taskfill /pid 14448 /f
mariadb가 설치되어 있는 컨테이너로 접속하여
docker exec -it mariadb /bin/bash
mariadb -u root -p
후 초기 비밀번호를 root로 설정했기 때문에 root 입력
<성공 화면>

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


Coffee 라는 database 를 새로 만들었고 이제 이 데이터베이스에 접근하여 여기에 간단하게 테이블을 생성하고 데이터 삽입,조회,삭제 작업을 진행해보자
USE Coffee;
접근한 데이터베이스에 새로운 테이블을 생성할 때 사용한다
// 테이블 생성
CREATE TABLE menu (
id INT,
name VARCHAR(30),
price INT
);

생성한 테이블에 원하는 값을 입력할 때 사용한다
// 데이터 값 입력
INSERT INTO [테이블명] (컬럼명1,컬럼명2,....) VALUES (컬럼명1데이터,컬럼명2데이터,...)

select 문은 전체 데이터를 조회하거나
where 문을 활용하여 특정 데이터를 조회할 때 사용한다
// 해당 컬럼의 데이터 조회
SELECT [컬럼명] FROM [테이블]
// 전체 컬럼 데이터 조회
SELECT * FROM [테이블]
// 특정 데이터 조회
SELECT [컬럼명] FROM [테이블] WHERE (조건문)

UPDATE는 테이블에서 데이터를 업데이트 하고 싶을 때 사용한다
UPDATE [테이블명] SET [컬럼명]=[수정하고싶은값] WHERE (조건)

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