๐ณ Docker Volume(๋์ปค ๋ณผ๋ฅจ)์ด๋?
- ๋์ปค์ ๋ณผ๋ฃธ(Volume)์ด๋ ๋์ปค ์ปจํ
์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.
- ๋ณผ๋ฅจ(Volume)์ ์ปจํ
์ด๋ ์์ฒด์ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ , ํธ์คํธ ์์ฒด์ ์ ์ฅ ๊ณต๊ฐ์ ๊ณต์ ํด์ ์ฌ์ฉํ๋ ํํ์ด๋ค.
๋ณผ๋ฅจ(Volumn)์ฌ์ฉ ๋ช
๋ น์ด
docker run -v [ํธ์คํธ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก]:[์ปจํ
์ด๋์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก] [์ด๋ฏธ์ง๋ช
]:[ํ๊ทธ๋ช
]
[ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋ ๊ฒฝ๋ก]
์ ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์กด์ฌํ ๊ฒฝ์ฐ, ํธ์คํธ ๋๋ ํฐ๋ฆฌ๊ฐ ์ปจํ
์ด๋์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฎ์ด์์ด๋ค.
[ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก]
์ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ, ํธ์คํธ์ ๋๋ ํฐ๋ฆฌ ์ ๋ ๊ฒฝ๋ก์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋ก ๋ง๋ค๊ณ ์ปจํ
์ด๋์ ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๋ค์ ํธ์คํธ์ ๋๋ ํฐ๋ฆฌ๋ก ๋ณต์ฌํด์จ๋ค.
Docker๋ก MySQL ์คํ
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
-e MYSQL_ROOT_PASSWORD=password123
: -e
์ต์
์ ์ปจํ
์ด๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ์ต์
์ด๋ค.
- Dockerhub์ MySQL๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ํ๊ฒฝ๋ณ์๋ก
MYSQL_ROOT_PASSWORD
๋ฅผ ์ ํด์ฃผ์ด์ผ ์ ์์ ์ผ๋ก ์ปจํ
์ด๋๊ฐ ์คํ๋๋ค.
ํ๊ฒฝ๋ณ์ ํ์ธ ๋ฐฉ๋ฒ
docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
## MySQL ์ปจํ
์ด๋ ๋ด๋ถ
> echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD๋ผ๋ ํ๊ฒฝ๋ณ์ ๊ฐ ์ถ๋ ฅ
> export #์ค์ ๋์ด ์๋ ๋ชจ๋ ํ๊ฒฝ ๋ณ์ ์ถ๋ ฅ
์ปจํ
์ด๋ ์ข
๋ฃ ํ ๋ค์ ์์ฑ
์ปจํ
์ด๋ ์ข
๋ฃ
$ 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; # ์๊น ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ด์ง ๊ฑธ ํ์ธํ ์ ์๋ค.
- ์ ๋ฐฉ์์ ๋ณผ๋ฃธ(Volum)์ ์ฌ์ฉํ์ง ์๊ณ MySQL ์ปจํ์ด๋๋ฅผ ๋์ ๋ค.
- MySQL ์ปจํ
์ด๋๋ฅผ ์ญ์ ํจ๊ณผ ๋์์ MySQL๋ด๋ถ์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ ๋์ด ์์ด์ก๋ค.
โญ๏ธ ๋ณผ๋ฅจ(Volumn)์ ์ด์ฉํด MySQL ์ปจํ
์ด๋ ๋์ฐ๊ธฐ
$ cd /Users/jaeseong/Documents/Develop
$ mkdir docker-mysql # MySQL ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ํด๋ ๋ง๋ค๊ธฐ
# docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v {ํธ์คํธ์ ์ ๋๊ฒฝ๋ก}/mysql_data:/var/lib/mysql -d mysql
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jhh0513/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
- ํธ์คํธ์ ์ ๋ ๊ฒฝ๋ก์ ๋์ปค์์ ์ค์ ํ ๊ฒฝ๋ก์ ํด๋๋ ์๋ก ํ์ผ์ ๊ณต์ ํ๋ค.
- ์์ฑ์ ์ ํธ์คํธ์ ๊ฒฝ๋ก์ ๋น ํด๋๋ฅผ ๋ง๋ค์ด ๋์ผ๋ฉด ์๋๋ค. ๊ทธ๋ผ ํธ์คํธ ์ปดํจํฐ์ ๋น ํด๋๊ฐ ๋์ปค์๋ ๊ณต์ ๋๊ธฐ ๋๋ฌธ์ ๋์ปค์์๋ ๋น ํด๋๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค.
- -v ๊ด๋ จ ์ต์
์ dockerHub์ ๊ณต์ ๋ฌธ์์์ ํ์ธํ ์ ์๋ค.
์ญ์ ํ ๋ค์ ๋์ฐ๊ธฐ
# ์ปจํ
์ด๋ ์ข
๋ฃ
$ docker stop [MySQL ์ปจํ
์ด๋ ID]
$ docker rm [MySQL ์ปจํ
์ด๋ ID]
# ์ปจํ
์ด๋ ์์ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
$ mysql -u root -p
mysql> show databases; # ์๊น ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ทธ๋๋ก ์กด์ฌํ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
โ ๏ธ ์ฃผ์์ฌํญ
# ์ปจํ
์ด๋ ์ข
๋ฃ
$ docker stop [MySQL ์ปจํ
์ด๋ ID]
$ docker rm [MySQL ์ปจํ
์ด๋ ID]
# ๋น๋ฐ๋ฒํธ ๋ฐ๊ฟ์ ์ปจํ
์ด๋ ์์ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
$ mysql -u root -p # ์ ์์ด ์ ๋จ...
- ํธ์คํธ ๊ฒฝ๋ก์ ๋น ํด๋๋ฅผ ๋ง๋ค์ด ๋์ง ์์ ๊ฒ.
- ์ค์ ํ ํ๊ฒฝ๋ณ์(ex:MYSQL_ROOT_PASSWORD)์ ๊ฒฝ์ฐ๋ ์ฒ์ ์คํํ์๋ ์ ์ฅํ ๊ฐ์ด ์ ์ฅ๋์ด ๋ฐ๋์ง ์๋๋ค.
- ๋ฐ๊พธ๋ ค๋ฉด
docker exec -it [์ปจํ
์ด๋ID] bash
๋ก MySQL์ ์ ์ํด ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ๋ฐ๊พผ๋ค.