1. Docker ๊ธฐ๋ณธ ๊ฐ๋
1. Docker๋ฅผ ์ ๋ฐฐ์ฐ๋ ๊ฑธ๊น?
- ์ด์์ฑ ๋๋ฌธ์ด๋ค. ์ด์์ฑ: ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ๊ณณ์ผ๋ก ์ฝ๊ฒ ์ฎ๊ฒจ์ ์ค์นํ๊ณ ์คํํ ์ ์๋ ์ฑ์ง
- ex) ๊ฐ์ ํ๋ก๊ทธ๋จ์ด๋ผ๋ ๋ด ์ปดํจํฐ์ ๋ค๋ฅธ ์ฌ๋์ ์ปดํจํฐ์ OS , ํ๋ก๊ทธ๋จ ๋ฑ์ด ๋ค๋ฅด๊ธฐ์ ์ค์น๊ฐ ์๋ ์ ์๊ณ , ์ค์น๊ณผ์ ์ด ๋ณต์กํ ๊ฒฝ์ฐ ๋ฒ๊ฑฐ๋กญ๋ค. ์ด๋ฅผ ์ํด Docker๋ฅผ ์ฌ์ฉํ๋ค.
- ์ถ๊ฐ์ ์ธ ์ฅ์
- ์ค์น ๊ณผ์ ์ผ์ผ์ด ์ ๊ฑฐ์ณ๋ ๋๋ค.
- ํญ์ ์ผ๊ด๋๊ฒ ํ๋ก๊ทธ๋จ ์ค์น ๊ฐ๋ฅ
- ํ๋ก๊ทธ๋จ์ด ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ์คํ -> ์ถฉ๋ x
์ถ๊ฐ ๊ฐ๋
- IP: ๋คํธ์ํฌ ์์์ ํน์ ์ปดํจํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์
- ํฌํธ: ํ ์ปดํจํฐ ๋ด์์ ์คํ๋๋ ํน์ ํ๋ก๊ทธ๋จ ์ฃผ์
- well-known port: 0~1023๊น์ง ๋ฏธ๋ฆฌ ์ ํด์ ธ ์๋ ํฌํธ ๋ฒํธ
- ex) 22(SSH), 80(HTTP), 443(HTTPS)
2. Docker? Container? Image?
- Docker: ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ, ๊ด๋ฆฌ ํ๋ ํด
- ์ปจํ
์ด๋: ํ๋์ ์ปดํจํฐ ํ๊ฒฝ์์ ๋
๋ฆฝ์ ์ธ ์ปดํจํ
ํ๊ฒฝ์ ๊ตฌ์ฑ, ํ๋์ ์ปดํจํ
ํ๊ฒฝ ๋ด์์ ์ฌ๋ฌ ๋ฏธ๋ ์ปดํจํ
ํ๊ฒฝ ๊ตฌ์ฑ -> ์ปจํ
์ด๋
- ์ปจํ
์ด๋์ ๋
๋ฆฝ์ฑ
- ์ ์ฅ๊ณต๊ฐ: ๊ฐ ์ปจํ ์ด๋๋ง๋ค ๊ณ ์ ์ ์ ์ฅ๊ณต๊ฐ ๊ฐ์ง๋ค. ์ผ๋ฐ์ ์ผ๋ก A ์ปจํ ์ด๋ ๋ด๋ถ๋ฅผ B ์ปจํ ์ด๋์์ ์ ๊ทผ ๋ถ๊ฐ
- ๋คํธ์ํฌ: ๊ฐ ์ปจํ ์ด๋๋ง๋ค ๊ณ ์ ์ ๋คํธ์ํฌ ๊ฐ์ง๋ค. ์ปจํ ์ด๋๋ง๋ค IP์ฃผ์๋ฅผ ๊ฐ์ง๋ค.
- ์ปจํ
์ด๋์ ๋
๋ฆฝ์ฑ
- ์ด๋ฏธ์ง: ํ๋ก๊ทธ๋จ ์คํ ์ ํ์ํ ์ค์น ๊ณผ์ , ์ค์ , ๋ฒ์ ์ ๋ณด๋ฑ์ ํฌํจ
- ์ด๋ฏธ์ง๋ฅผ ํตํด ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ์ ์๋ค. ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ๊ด๊ณ๋ฅผ ๊ธฐ์ตํ์
3. Docker ์ค์ต
- ๋์ปค ์กฐ์๋ฒ: ํฐ๋ฏธ๋์์ CLI๋ฅผ ์ด์ฉ
- Nginx๋ฅผ Docker์์ ์ค์นํ๊ณ ์คํํด๋ณด์
# Nginx ์ด๋ฏธ์ง ๋ค์ด๋ก๋
$ docker pull nginx
# ๋ค์ด๋ก๋ ๋ ์ด๋ฏธ์ง ํ์ธ
$ docker image ls
# ์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋์ ์ฌ๋ ค์ Nginx ์๋ฒ ์คํ
$ docker run --name webserver -d -p 80:80 nginx
#์คํ์ค์ธ ๋ชจ๋ ์ปจํ
์ด๋ ํ์ธ
$ docker ps
#์ปจํ
์ด๋ ์ ์ง
$ docker stop webserver
- ์ข ๋ฃ ์
- ํธ์คํธ ์ปดํจํฐ์์ Nginx๋ฅผ ์คํํ๋ ์ปจํ ์ด๋๋ฅผ ๋์ด ๊ฒ
2. ํ์ ์์ ์์ฃผ ์ฌ์ฉํ๋ Docker CLI ์ตํ๊ธฐ
1. ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- ์ด๋ฏธ์ง ๋ค์ด๋ก๋ ์ Dockerhub๋ผ๋ ์ ์ฅ์์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๋๋ค.
- ํน์ ๋ฒ์ ์ ๋ํ๋ด๋ ์ด๋ฆ์ ํ๊ทธ๋ช ์ด๋ผ ํ๋ฉฐ, Dockerhub์์ ํ์ธ ๊ฐ๋ฅ
#docker pull ์ด๋ฏธ์ง๋ช
#์๋๋ docker pull nginx:latest ์ ๋์ผ
$ docker pull ngnix
#ํน์ ๋ฒ์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋
#docker pull ์ด๋ฏธ์ง๋ช
:ํ๊ทธ๋ช
$ docker pull nginx:stable-perl
2. ์ด๋ฏธ์ง ์กฐํ/์ญ์
- ์ด๋ฏธ์ง ์กฐํ
#๋ค์ด๋ฐ์ ๋ชจ๋ ์ด๋ฏธ์ง ์กฐํ
$ docker image ls
- REPOSITORY: ์ด๋ฏธ์ง ์ด๋ฆ
- TAG: ์ด๋ฏธ์ง ํ๊ทธ๋ช
- IMAGE ID: ์ด๋ฏธ์ง ID
- CREATED: ์ด๋ฏธ์ง ์์ฑ ๋ ์ง, ๋ค์ด๋ฐ์ ๋ ์ง๊ฐ ์๋
- SIZE: ์ด๋ฏธ์ง ํฌ๊ธฐ
- ์ด๋ฏธ์ง ์ญ์
#์ด๋ฏธ์ง ์ญ์
$ docker image rm [image ID or image Name]
- ์ด๋ ์ด๋ฏธ์ง ID์ ์ผ๋ถ๋ง ์ ๋ ฅํด๋ ๋๋ค.
- ์ปจํ ์ด๋์์ ์ฌ์ฉํ๊ณ ์์ง ์์ ์ด๋ฏธ์ง๋ง ์ญ์ ๊ฐ๋ฅ
- ์คํ ์ค์ธ ์ปจํ ์ด๋๊ฐ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด๋ฏธ์ง ๊ฐ์ ์ญ์ ๋ถ๊ฐ
- ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ๋ก ์ญ์ ํ๋ ๋ช ๋ น์ด๋ก, ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ค์ง๋ ์ปจํ ์ด๋๊ฐ ์์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๊ฐ ์ญ์ ๋๋ค.
$ docker image rm -f [image ID or image Name]
- ์ ์ฒด ์ด๋ฏธ์ง ์ญ์
- docker images -q: ์์คํ ์ ์๋ ๋ชจ๋ ์ด๋ฏธ์ง์ ID๋ฅผ ๋ฐํ, -q : quite ๋ฅผ ํตํด ๊ฐ ์ด๋ฏธ์ง์ ID๋ง ํ์
# ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์์ง ์์ ์ด๋ฏธ์ง๋ง ์ ์ฒด ์ญ์
$ docker image rm $(docker images -q)
# ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฏธ์ง๋ฅผ ํฌํจํด์ ์ ์ฒด ์ด๋ฏธ์ง ์ญ์
$ docker image rm -f $(docker images -q)
3. ์ปจํ ์ด๋ ์์ฑ๊ณผ ์คํ
- ์ปจํ ์ด๋ ์์ฑ: ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋๋ค. ์์ฑ๋งํ๊ณ ์คํ์ ๋์ง ์๋๋ค.
# docker create ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker create nginx
# ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ
$ docker ps -a
์ด๋, ๋ก์ปฌ ํ๊ฒฝ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด Dockerhub์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค.
- ์ปจํ ์ด๋ ์คํ: ์ ์ง๋์ด ์๋ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
$ docker start ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
$ docker ps # ์คํ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
# Nginx ์ปจํ
์ด๋ ์ค๋จ ํ ์ญ์ ํ๊ธฐ
$ docker ps # ์คํ ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
$ docker stop {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ค๋จ
$ docker rm {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ญ์
$ docker image rm nginx # Nginx ์ด๋ฏธ์ง ์ญ์
- ์ปจํ ์ด๋ ์์ฑ&์คํ
- ๋ก์ปฌ ํ๊ฒฝ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด Dockerhub๋ก๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์์ ์คํ์ํจ๋ค.
# docker run ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run nginx # ํฌ๊ทธ๋ผ์ด๋์์ ์คํ
์ถ๊ฐ ๊ฐ๋
- ํฌ์ด๊ทธ๋ผ์ด๋: ์คํ์ํจ ํ๋ก๊ทธ๋จ์ ๋ด์ฉ์ด ํ๋ฉด์ ์คํ,์ถ๋ ฅ๋๋ ์ํ -> ๋ค๋ฅธ ์์ ๋ถ๊ฐ
- ๋ฐฑ๊ทธ๋ผ์ด๋: ์คํ์ํจ ํ๋ก๊ทธ๋จ์ด ๋ด๋ถ์์ ์คํ๋๋ ์ํ -> ๋ค๋ฅธ ์์ ๊ฐ๋ฅ
- ์ปจํ ์ด๋์ ์ด๋ฆ ๋ถ์ฌ์ ์์ฑ&์คํ
# docker run -d --name [์ปจํ
์ด๋ ์ด๋ฆ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run -d --name my-web-server nginx
- ํธ์คํธ ํฌํธ์ ์ปจํ ์ด๋ ํฌํธ ์ฐ๊ฒฐํ๊ธฐ
- ๋์ปค ์คํํ๋ ํธ์คํธ์ 4000๋ฒ ํฌํธ๊ฐ ์ปจํ ์ด๋์ 80๋ฒ ํฌํธ๋ก ์ฐ๊ฒฐ๋๋ค.
# docker run -d -p [ํธ์คํธ ํฌํธ]:[์ปจํ
์ด๋ ํฌํธ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run -d -p 4000:80 nginx
4. ์ปจํ ์ด๋ ์กฐํ/์ค์ง/์ญ์
- ์ปจํ
์ด๋ ์กฐํ
- ps: process status
# ์คํ ์ค์ธ ์ปจํ
์ด๋๋ง ์กฐํ
$ docker ps
# ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ
$ docker ps -a
- ์ปจํ
์ด๋ ์ค์ง
- stop: ์ผ๋ฐ์ ์ธ ์ข ๋ฃ
- kill: ๊ฐ์ ์ข ๋ฃ
$ docker stop ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
$ docker kill ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
- ์ปจํ ์ด๋ ์ญ์
# ์ค์ง๋ ์ปจํ
์ด๋ ์ญ์
$ docker rm ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
# ์คํ์ค์ธ ์ปจํ
์ด๋ ์ญ์
$ docker rm -f ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
# ์ค์ง๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
$ docker rm $(docker ps -qa)
# ์คํ์ค์ธ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
$ docker rm -f $(docker ps -qa)
5. ์ปจํ ์ด๋ ๋ก๊ทธ ์กฐํ
- ์ปจํ ์ด๋ ๋ก๊ทธ ์กฐํ
# docker logs [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
$ docker run -d nginx
$ docker logs [nginx๊ฐ ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋ ID]
- ์ต๊ทผ ๋ก๊ทธ 10์ค ์กฐํ
# dokcer logs --tail [๋ก๊ทธ ๋๋ถํฐ ํ์ํ ์ค ์] [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
$ dokcer logs --tail 10 [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
- ๊ธฐ์กด๋ก๊ทธ(O) + ์ถ๊ฐ์ ์ผ๋ก ์์ฑ๋๋ ๋ก๊ทธ ์กฐํ
- -f : follow
# docker logs -f [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
# Nginx์ ์ปจํ
์ด๋์ ์ค์๊ฐ์ผ๋ก ์์ด๋ ๋ก๊ทธ ํ์ธํ๊ธฐ
$ docker run -d -p 80:80 nginx
$ docker logs -f
- ๊ธฐ์กด๋ก๊ทธ(X) + ์ถ๊ฐ์ ์ผ๋ก ์์ฑ๋๋ ๋ก๊ทธ
$ docker logs --tail 0 -f [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
6. ์คํ์ค์ธ ์ปจํ ์ด๋ ๋ด๋ถ ์ ์
# docker exec -it ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID] bash
$ docker run -d nginx
$ docker exec -it [Nginx๊ฐ ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋ ID] bash
$ ls # ์ปจํ
์ด๋ ๋ด๋ถ ํ์ผ ์กฐํ
$ cd /etc/nginx
$ cat nginx.conf
์ถ๊ฐ ๊ฐ๋
- bash: ์์ ์ผ์ข
- -it: -it ์ต์
์ ์ฌ์ฉํด์ผ ๋ช
๋ น ์
๋ ฅํ๊ณ ๊ฒฐ๊ณผ ํ์ธ ๊ฐ๋ฅ
- -it ์ต์ ์ ์ ์ง ์์ผ๋ฉด ๋ช ๋ น์ด๋ฅผ 1๋ฒ๋ง ์คํ์ํค๊ณ ์ข ๋ฃ๋๋ค.
docker run ๋ช ๋ น์ด ์ต์
์ต์ | ๋ด์ฉ |
-d | ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ |
-it | ํฐ๋ฏธ๋์ ์ฐ๊ฒฐํ์ฌ ๋ช
๋ น์ด ์
๋ ฅ -i: ์ปจํ ์ด๋์ ์ํธ์์ฉํ ์ ์๊ฒ ํ์ค ์ ๋ ฅ ์ฐ๊ฒฐ -t: ๊ฐ์ ํฐ๋ฏธ๋ ํ ๋น |
--name [์ด๋ฆ] | ์ปจํ ์ด๋์ ํน์ ์ด๋ฆ ์ง์ |
-p [ํธ์คํธ ํฌํธ]:[์ปจํ ์ด๋ ํฌํธ] | ํฌํธ ํฌ์๋ฉ ์ค์ ํ์ฌ ํธ์คํธ์ ํน์ ํฌํธ์ ์ปจํ ์ด๋ ํฌํธ ์ฐ๊ฒฐ |
--rm | ์ปจํ ์ด๋ ์ข ๋ฃ ์ ์๋ ์ญ์ |
-v [ํธ์คํธ ๋๋ ํ ๋ฆฌ]:[์ปจํ ์ด๋ ๋๋ ํ ๋ฆฌ] | ํธ์คํธ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ง์ดํธ |
3. ๋์ปค ๋ณผ๋ฅจ์ ํ์ฉํด ๋ฐ์ดํฐ ์ ์ค ๋ฐฉ์งํ๊ธฐ
1. ๋์ปค ๋ณผ๋ฅจ
- ์ปจํ
์ด๋์ ๋ฌธ์ ์
- Docker์์๋ ์ปจํ ์ด๋๋ฅผ ์๋ก์ด ์ปจํ ์ด๋๋ก ๊ต์ฒดํ๋ฉด, ๊ธฐ์กด ์ปจํ ์ด๋ ๋ด๋ถ ๋ฐ์ดํฐ๋ ๊ฐ์ด ์ญ์ ๋๋ค.
- ex) MySQL ์คํ์ํค๋ ์ปจํ ์ด๋ ๊ต์ฒด ์ ๋ฐ์ดํฐ๋ ์ญ์ ๋จ -> Volume์ผ๋ก ํด๊ฒฐ
- ๋์ปค ๋ณผ๋ฅจ
- ๋์ปค ์ปจํ ์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ
- ์ปจํ ์ด๋์ ์์ฒด ์ ์ฅ ๊ณต๊ฐ์ด ์๋ ํธ์คํธ ์์ฒด์ ์ ์ฅ ๊ณต๊ฐ์ ๊ณต์ ํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ๋ณผ๋ฅจ ์ฌ์ฉ ๋ช ๋ น์ด
$ docker run -v [ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก]:[์ปจํ
์ด๋์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก] [์ด๋ฏธ์ง๋ช
]:[ํ๊ทธ๋ช
]
- [ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก]์ ๋๋ ํ ๋ฆฌ ์ด๋ฏธ ์กด์ฌ ์: ํธ์คํธ์ ๋๋ ํ ๋ฆฌ๊ฐ ์ปจํ ์ด๋์ ๋๋ ํ ๋ฆฌ ๋ฎ์ด์์
- [ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋๊ฒฝ๋ก]์ ๋๋ ํ ๋ฆฌ ์กด์ฌํ์ง ์์ ์: ํธ์คํธ์ ๋๋ ํ ๋ฆฌ ์ ๋ ๊ฒฝ๋ก์ ๋๋ ํ ๋ฆฌ ์๋ก ๋ง๋ค๊ณ ์ปจํ ์ด๋ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ํธ์คํธ ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌ
2. Docker๋ก MySQL ์คํ
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
- Dockerhub๋ก MySQL ๋์ฐ๋ ค๋ฉด ํ๊ฒฝ๋ณ์๋ก MYSQL_ROOT_PASSWORD๋ฅผ ์ง์ ํด์ผํ๋ค.
- -e ์ต์ ์ ์ปจํ ์ด๋ ํ๊ฒฝ ๋ณ์ ์ค์ ํ๋ ์ต์
- ์ปจํ ์ด๋ ์ ์ํ์ฌ ํ๊ฒฝ๋ณ์ ํ์ธ
$ docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
$ echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD๋ผ๋ ํ๊ฒฝ๋ณ์ ๊ฐ ์ถ๋ ฅ
$ export # ์ค์ ๋์ด ์๋ ๋ชจ๋ ํ๊ฒฝ๋ณ์ ์ถ๋ ฅ
- MySQL ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํ์ํค๊ณ , ๋ก๊ทธ ํ์ธ ํด๋ณด๋ ์ ์ ์๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
- bash ๋๊ฐ๋๋ exit ์ ๋ ฅํ๋ฉด ๋๋ค.
MySQL ์ปจํ ์ด๋์ ์ง์ ์ ์
$ docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
์ปจํ ์ด๋์์ MySQL์ ์ ๊ทผํ๊ธฐ
$ mysql -u root -p
๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ
mysql> show databases;
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
mysql> create database mydb;
mysql> show databases;
์ปจํ ์ด๋๋ฅผ ์ข ๋ฃ ํ ์์ ๋ด์ฉ์ ๋ค์ ํด๋ณด์
# ์ปจํ
์ด๋ ์ข
๋ฃ
$ 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; # ์๊น ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ด์ง ๊ฑธ ํ์ธํ ์ ์๋ค.
์ง๊ธ๊น์ง๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ง ์๊ณ ์ปจํ ์ด๋๋ฅผ ๋์ ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ ์กฐํํด๋ณด๋ฉด ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๊ฒ์ ์ ์ ์๋ค.
์ด์ ๋์ปค ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กดํด๋ณด์
3. ๋ณผ๋ฅจํ์ฉํ์ฌ Docker๋ก MySQL ์คํ
- 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/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
- ์ฃผ์ํ ์ : mysql_data ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค๋ฉด ์๋๋ค. ๊ทธ๋์ผ ์ฒ์ ์ด๋ฏธ์ง ์คํ ์ mysql ๋ด๋ถ์ ์๋ /var/lib/mysql ํ์ผ๋ค์ ํธ์คํธ ์ปดํจํฐ๋ก ๊ณต์ ๋ฐ์ ์ ์๋ค. ๋ฏธ๋ฆฌ ๋ง๋ค๋ฉด ๊ธฐ์กด ์ปจํ ์ด๋์ /var/lib/mysql ํ์ผ์ ์ ๋ถ ์ญ์ ํ๊ณ ๋์ mysql_data๋ก ๋ฎ์ด์์ด๋ค.
- Dockerhub MySQL ๊ณต์๋ฌธ์์ /var/lib/mysql์ DB ๊ด๋ จ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค๊ณ ๋์์๋ค.
MySQL ์ปจํ ์ด๋์ ์ ์ํด์ DB ๋ง๋ค๊ธฐ
$ docker exec -it [MySQL ์ปจํ
์ด๋ ID] bash
$ mysql -u root -p
mysql> show databases;
mysql> create database mydb;
mysql> show databases;
- ์ปจํ ์ด๋ ์ข ๋ฃ ํ ๋ค์ ์์ฑ
# ์ปจํ
์ด๋ ์ข
๋ฃ
$ 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
MYSQL_ROOT_PASSWORD ๊ฐ์ ๋ฐ๊ฟ์ ์๋ก ์ปจํ ์ด๋๋ฅผ ๋์ ๋๋ฐ, ์ ์์ด ์๋๋ค??? -> Volume์ผ๋ก ์ค์ ํ ํด๋์ ์ด๋ฏธ ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฅ๋์๊ธฐ์ ์๋ก์ด ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฉ์ด ์๋๋ ๊ฒ
์ถ์ฒ
'๐ณ์ธํ๋ผ > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Use Docker (0) | 2024.12.05 |
---|---|
Container&Docker (0) | 2024.12.04 |
์ฟ ๋ฒ๋คํฐ์ค (1) | 2024.09.11 |
์๋ฒ ๊ฐ์ํ (0) | 2024.09.06 |
4. ์ด๋ฏธ์ง๋น๋ (0) | 2024.08.31 |