DockerStudy

[[Docker ๐Ÿณ] 3. ๋„์ปค ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ์œ ์‹ค ๋ฐฉ์ง€ํ•˜๊ธฐ

์ด๊ทœํ˜„2026-01-23
[[Docker ๐Ÿณ] 3. ๋„์ปค ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ์œ ์‹ค ๋ฐฉ์ง€ํ•˜๊ธฐ

Docker Volume (๋„์ปค ๋ณผ๋ฅจ)

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ€์ง„ ๋ฌธ์ œ์ 

Docker๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์— ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋ฉด ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ด ๋•Œ, Docker๋Š” ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ , ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ†ต์งธ๋กœ ๊ฐˆ์•„๋ผ์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ต์ฒด๋ฅผ ํ•œ๋‹ค.

์ด๋Ÿฐ ํŠน์ง• ๋•Œ๋ฌธ์— ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ต์ฒดํ•˜๋ฉด, ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋„ ๊ฐ™์ด ์‚ญ์ œ๋œ๋‹ค.

Docker Volume์ด๋ž€?

๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜์†์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณผ๋ฅจ(Volume)์€ ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ํ˜ธ์ŠคํŠธ ์ž์ฒด์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด

$ docker run **-v [ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ ˆ๋Œ€๊ฒฝ๋กœ]:[์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ ˆ๋Œ€๊ฒฝ๋กœ]** [์ด๋ฏธ์ง€๋ช…]:[ํƒœ๊ทธ๋ช…]
  • [ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ ˆ๋Œ€ ๊ฒฝ๋กœ]์— ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•  ๊ฒฝ์šฐ, ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฎ์–ด์”Œ์šด๋‹ค.
  • [ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ ˆ๋Œ€ ๊ฒฝ๋กœ]์— ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์— ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ํ˜ธ์ŠคํŠธ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณต์‚ฌํ•ด์˜จ๋‹ค.

Docker๋กœ MySQL ์‹คํ–‰์‹œ์ผœ๋ณด๊ธฐ

MySQL ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์‹œํ‚ค๊ธฐ

$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
  • ์ฐธ๊ณ ) docker pull ๊ณผ์ •์€ ์ƒ๋žตํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด docker run mysql๋กœ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ, ๋กœ์ปฌ์— ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด Dockerhub์œผ๋กœ๋ถ€ํ„ฐ MySQL ์ด๋ฏธ์ง€๋ฅผ ์•Œ์•„์„œ ๋‹ค์šด๋ฐ›์•„์„œ ์‹คํ–‰์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • -e MYSQL_ROOT_PASSWORD=password123 : -e ์˜ต์…˜์€ ์ปจํ…Œ์ด๋„ˆ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
  • Dockerhub์˜ MySQL ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ MYSQL_ROOT_PASSWORD๋ฅผ ์ •ํ•ด์ฃผ์–ด์•ผ๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋œ๋‹ค๊ณ  ์ ํ˜€์ ธ์žˆ๋”ฐ.
  • ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•ด๋ณด์ž.
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD๋ผ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ’ ์ถœ๋ ฅ
$ export # ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถœ๋ ฅ

MySQL ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ์ ‘์†ํ•ด๋ณด๊ธฐ

  1. MySQL ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash
  1. ์ปจํ…Œ์ด๋„ˆ์—์„œ MySQL ์ ‘๊ทผํ•˜๊ธฐ
$ mysql -u root -p
$ mysql -u root -p'์„ค์ •ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ'
  1. MySQL ์ ‘๊ทผ์— ์„œ์˜นํ–‡๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒํ•˜๊ธฐ
mysql> show databases;
  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ
mysql> create database mydb;
mysql> show databases'

  1. ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒํ›„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด๋ณด๊ธฐ
# ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop [MySQL ์ปจํ…Œ์ด๋„ˆ ID]
$ docker rm [MySQL ์ปจํ…Œ์ด๋„ˆ ID]

# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ mysql -u root -p
mysql> show databases; # ์•„๊นŒ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—†์–ด์ง„ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณผ๋ฅจ์„ ํ™œ์šฉํ•ด MySQL ์ปจํ…Œ์ด๋„ˆ ๋„์šฐ๊ธฐ

  1. MySQL ์ปจํ…Œ์ด๋„ˆ ๋„์šฐ๊ธฐ
$ cd /Users/kyulee/Desktop/docker-study
$ mkdir docker-mysql # MySQL ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ์€ ํด๋” ๋งŒ๋“ค๊ธฐ

# docker run -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -v {ํ˜ธ์ŠคํŠธ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ}/mysql_data:/var/lib/mysql -d mysql
$ docker run -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -v /Users/kyulee/Desktop/docker-study/docker-mysql/mysql_data:/var/lib/mysql -d mysql

  • ์ฃผ์˜) mysql_data ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ž˜์•ผ ์ฒ˜์Œ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ mysql ๋‚ด๋ถ€์— ์žˆ๋Š” /var/lib/mysql ํŒŒ์ผ๋“ค์„ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋กœ ๊ณต์œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. mysql_data ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“์„ ๊ฒฝ์šฐ, ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์˜ /var/lib/mysql ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ ์‚ญ์ œํ•œ ๋’ค์— mysql_data๋กœ ๋ฎ์–ด์”Œ์›Œ ๋ฒ„๋ฆฐ๋‹ค.
  • DB์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ด /var/lib/mysql์ธ์ง€๋Š” Dockerhub MySQL์˜ ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋‹ค.
  1. MySQL ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ mysql -u root -p'1234'

mysql> show databases;
mysql> create database mydb;
mysql> show databases;

  1. ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ํ™•์ธํ•ด๋ณด๊ธฐ
# ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop [MySQL ์ปจํ…Œ์ด๋„ˆ ID]
$ docker rm [MySQL ์ปจํ…Œ์ด๋„ˆ ID]

# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -v /Users/kyulee/Desktop/docker-study/docker-mysql/mysql_data:/var/lib/mysql -d mysql

# ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์ธ
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash
$ mysql -u root -p
mysql> show databases; # ์•„๊นŒ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ทธ๋Œ€๋กœ ์กด์žฌํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Volume์œผ๋กœ ์„ค์ •ํ•ด๋‘” ํด๋”์— ์ด๋ฏธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 'MYSQL_ROOT_PASSWORD`์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ ‘์†์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

์Šคํ„ฐ๋”” ๋ฏธ์…˜

๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜์—ฌ MongoDB ์‹คํ–‰์‹œ์ผœ๋ณด๊ธฐ

  1. MongoDB ์ปจํ…Œ์ด๋„ˆ ๋„์šฐ๊ธฐ
$ cd /Users/kyulee/Desktop/docker-study
$ mkdir docker-mongodb # MongoDB ๋ฐ์ดํ„ฐ ์ €์žฅ ํด๋” ๋งŒ๋“ค๊ธฐ

$ docker run -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=1234 -p 27017:27017 -v /Users/kyulee/Desktop/docker-study/docker-mongodb/mongodb_data:/data/db -d mongo
  1. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ฒดํฌ
$ docker ps

  1. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ ์—๋Ÿฌ ์—†์ด ์ž˜ ์‹คํ–‰๋๋Š” ์ง€ ๋กœ๊ทธ ์ฒดํฌ
 $ docker logs [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…]
  1. MongoDB ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†
$ docker exec -it [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] bash
  1. ์ปจํ…Œ์ด๋„ˆ์—์„œ MongoDB์— ์ ‘๊ทผํ•˜๊ธฐ
$ mongosh

  1. GUI๋กœ ๋ชฝ๊ณ ๋””๋น„ ์—ฐ๊ฒฐ ํ™•์ธ

  2. MongoDB ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋ฅจ์— ์ž˜ ์ €์žฅ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

$ cd /Users/kyulee/desktop/docker-study/docker-mongodb/mongodb_data
$ ls