did_story

[MariaDB] Docker๋กœ MariaDB ์‹คํ–‰ ๋ฐ ์ ‘์†ํ•˜๊ธฐ ๋ณธ๋ฌธ

BackEnd๐Ÿƒ/DB & SQL

[MariaDB] Docker๋กœ MariaDB ์‹คํ–‰ ๋ฐ ์ ‘์†ํ•˜๊ธฐ

์–ด์ œ์‹œ์ž‘ 2025. 1. 3. 15:29

ํ•ด๋‹น ๊ธ€์€ ์ €์ž๊ฐ€ ๋” ์ด์ƒ ๋งค๋ฒˆ ์ฐพ์•„๋ณด๊ธฐ ํž˜๋“ค์–ด์„œ(?) ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.ใ…Žใ…Ž

 

MariaDB  Container ์„ค์น˜

1. Docker image

docker pull mariadb

ํ•ด๋‹น ๋ช…๋ น์–ด๋กœ docker Hub์— MariaDB Image๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. 

 

Docker Hub๋Š” Docker ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ณต์‹ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์ด ๋งŒ๋“  Docker Image๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ๊ณต์œ ํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์—…๋กœ๋“œํ•œ Docker Image ๋˜ํ•œ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

Docker Image๋Š” ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์˜ ๊ธฐ๋ฐ˜์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋Š” ์ ๊ณผ, Dockerfile๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ Docker Hub์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker images

ํ•ด๋‹น ๋ช…๋ น์–ด๋กœ ์„ค์น˜๋œ Docker Image๋“ค์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

docker Images ์‹คํ–‰

 

2. MariaDB ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰

docker run --name my-container --restart=always -p 3306:3306 -e MARIADB_ROOT_PASSWORD=my-secret-password -d mariadb

์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด MariaDB Docker Image๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ช…๋ น์–ด ๊ฐ๊ฐ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

docker run Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค
-p ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค
์˜ˆ์ œ} ํ˜ธ์ŠคํŠธ 3306 ๊ณผ ์ปจํ…Œ์ด๋„ˆ 3306 ๋งตํ•‘.
--name ์ปจํ…Œ์ด๋„ˆ์— ์ง€์ •ํ•  ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. 
-d ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ(Detached) ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
-restart=always ๋„์ปค๊ฐ€ ์‹คํ–‰๋ ๋•Œ ํ•ญ์ƒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰
-e MYSQL_ROOT_PASSWORD -e : ๊ธฐํƒ€ ํ™˜๊ฒฝ ์„ค์ •, MYSQL_ROOT_PASSWORD : container์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •
mariadb
์‹คํ–‰ํ•  Docker ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

 

// ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์กฐํšŒ
docker ps
 
// ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
docker ps -a

์œ„์˜ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ํ˜น์€ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

 

3. MariaDB์— ์ ‘์†ํ•˜๊ธฐ

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ๋˜์—ˆ๋‹ค๋ฉด,

docker exec -it my-container mariadb -uroot -p

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด MariaDB ์„œ๋ฒ„์— ์ ‘์† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

"mariadb -uroot -p" ํ•ด๋‹น ๋ช…๋ น์–ด๋กœ root ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ ํ•˜๊ฒŒ ๋˜๊ณ  ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋‚˜ ๋‚˜์˜ค๋ฉด, "my-secret-password"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

MariaDB  ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ๋ฐ user ๊ถŒํ•œ ์„ค์ •.

ํ•ด๋‹น ๋ถ€๋ถ„์„ ํ•ด์ฃผ์–ด์•ผ Datagrip์ด๋‚˜ DBeaver์— ์œ ์ €๋กœ database์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ด๊ฑธ ๊นœ๋นกํ•˜๊ณ  ์™œ ์•ˆ๋˜๋‚˜ 20๋ถ„ ๊ณ ๋ฏผํ–ˆ๋˜ ์ ์ด ๋งŽ์•„์š”..

1. ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

CREATE USER 'user_name'@'ip_address' IDENTIFIED BY 'user_password';

์œ„์˜ ๋ช…๋ น์–ด๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด๋กœ

  • 'user_name' : ์ƒˆ๋กœ ๋งŒ๋“ค ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„.
  • 'ip_address' : ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ, ex) 'localhost', '%' ('%'๋กœ ์ง€์ •ํ•˜๋ฉด ๋ชจ๋“  ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ)
  • 'user_password' : ์‚ฌ์šฉ์ž์˜ ํŒจ์Šค์›Œ๋“œ ์„ค์ •.

2. ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ .

GRANT ALL PRIVILEGES ON *.* TO 'tester'@'%' IDENTIFIED BY 'your_password';

์œ„์˜ ๋ช…๋ น์–ด๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ช…๋ น์–ด๋กœ 

 

  • *.* : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • 'tester'@'%' : ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์—์„œ ์ ‘์† ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž tester๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • IDENTIFIED BY 'your_password' : ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

3. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

FLUSH PRIVILEGES;

 

์œ„์˜ ๋ช…๋ น์–ด๋Š”, 

๋ณดํ†ต์€ INSERT, DELETE, UPDATE๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ถŒํ•œ ๋ณ€๊ฒฝ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋•Œ FLUSH PRIVILEGES๋Š” grant ํ…Œ์ด๋ธ”์„ reloadํ•จ์œผ๋กœ์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜๋„๋ก ํ•œ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ grant ํ›„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, ๋‹ค์Œ ๊ณผ์ •์—์„œ ์ง„ํ–‰์ด ์•ˆ๋  ์‹œ **"ํ˜น์‹œ ๋ชจ๋ฅด๋‹ˆ ์‹คํ–‰"**ํ•ด๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด FLUSH PRIVILEGES๋Š” ๊ต‰์žฅํžˆ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šต๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜์…จ๋‹ค๋ฉด mariadb์— ์ž˜ ์—ฐ๊ฒฐ์ด ๋˜์‹ค ๊ฒƒ์ด๋ผ ๋ฏฟ์Šต๋‹ˆ๋‹ค.

 

Docker์˜ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋“ค

docker --help ๋ช…๋ น์–ด๋กœ ์—ฌ๋Ÿฌ docker ๋ช…๋ น์–ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ œ๊ฐ€ ๊ทธ๋ƒฅ ์“ฐ๋Š” ๋ช…๋ น์–ด๋งŒ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

(gpt ํž˜์„ ๋นŒ๋ฆฐ๊ฑด ์•ˆ๋น„๋ฐ€)

docker search [์ด๋ฏธ์ง€ ์ด๋ฆ„] Docker Hub์—์„œ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ docker search nginx
docker pull [์ด๋ฏธ์ง€ ์ด๋ฆ„:ํƒœ๊ทธ] ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ docker pull ubuntu:20.04
docker images ๋กœ์ปฌ์— ์ €์žฅ๋œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ํ‘œ์‹œ -
docker rmi [์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋˜๋Š” ID] ๋กœ์ปฌ ์ด๋ฏธ์ง€ ์‚ญ์ œ docker rmi ubuntu
docker run [์˜ต์…˜] [์ด๋ฏธ์ง€ ์ด๋ฆ„] ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ docker run -it ubuntu
docker ps ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ํ‘œ์‹œ -
docker ps -a ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ(์ข…๋ฃŒ๋œ ์ปจํ…Œ์ด๋„ˆ ํฌํ•จ) ๋ชฉ๋ก ํ‘œ์‹œ -
docker start [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„] ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ docker start my-container
docker stop [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„] ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ •์ง€ docker stop my-container
docker exec -it [์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„] bash ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ์ง„์ž… docker exec -it my-container bash
docker rm [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„] ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ docker rm my-container
docker logs [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„] ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋กœ๊ทธ ํ™•์ธ docker logs my-container
docker build -t [์ด๋ฏธ์ง€ ์ด๋ฆ„:ํƒœ๊ทธ] . Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œ docker build -t myapp
docker volume ls Docker ๋ณผ๋ฅจ ๋ชฉ๋ก ํ‘œ์‹œ -
docker network ls Docker ๋„คํŠธ์›Œํฌ ๋ชฉ๋ก ํ‘œ์‹œ -
docker-compose up docker-compose.yml ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ์„œ๋น„์Šค ์‹œ์ž‘ -
docker-compose down ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ -
docker system prune ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ, ๋„คํŠธ์›Œํฌ, ์ด๋ฏธ์ง€, ๋ณผ๋ฅจ ์ •๋ฆฌ -
docker system df Docker ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ‘œ์‹œ -
docker update --restart=always [์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„] ์ปจํ…Œ์ด๋„ˆ์˜ ์ž๋™ ์žฌ์‹œ์ž‘ ์„ค์ • docker update --restart=always my-container