๐คRyusun๐ค
2023. 5. 14. 23:08
Docker
- ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฉํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ณ , ๋ฐฐํฌํ๊ณ ์คํํ ์ ์๋๋ก ์ค๊ณ๋ ๋๊ตฌ์ด๋ฉฐ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ
- ์ผ๋ฐ ์ปจํ ์ด๋ ๊ฐ๋ ์์ ๋ฌผ๊ฑด์ ์์ฝ๊ฒ ์ด์กํด์ฃผ๋ ๊ฒ์ฒ๋ผ ์ดํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์์ฝ๊ฒ ๋ฐฐํฌ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋ค.
- •์ปจํ ์ด๋ ๊ธฐ๋ฐ ๋ฐฐํฌ ๋ฐฉ์์ ๊ตฌ๊ธ์ ๋น๋กฏํด ๋๋ถ๋ถ ์๋น์ค ํ์ฌ๊ฐ ์ปจํ ์ด๋๋ก ์๋น์ค ์ด์ ์ค
- ๋ฐ๋ผ์ AWS, Azure, Google Cloud๋ฑ ์ด๋์๋ ์คํ ๊ฐ๋ฅํ๋ค.
์ Docker ๋ฅผ ์ฌ์ฉํ ๊น?
- ๋์ปค๋ ์๋ฒ๋ง๋ค ๋์ผํ ํ๊ฒฝ์ ๊ตฌ์ฑํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ๋ถํฐ ์ปดํ์ผ๋ฌ, ์ค์น๋ ํจํค์ง ๋ฑ ๋์ผํ ํ๊ฒฝ์ ๊ตฌ์ฑํด์ค๋ค.
- ๋ฐ๋ผ์ auto scaling ์ ์ ๋ฆฌํ๋ค.
๋์ปค์ ๊ธฐ์กด ๊ฐ์ํ ๊ธฐ์ (VM)
- ๊ฐ์ํ๋?
- ๊ฐ์ํ๋ฐ ํ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ๋ฑ์ ์ฅ๋น๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๋ ๋ฆฝ๋ ์ฌ๋ฌ๊ณต๊ฐ์ผ๋ก ๋๋์ด ๋ง๋ค๊ณ , ๊ทธ ๊ณต๊ฐ๋ค์ ๊ฐ๊ฐ์ ์ํํธ์จ์ด๋ค์ ๊ตฌ์ฑํ๋ ๊ธฐ์ ์ ๋ปํ๋ค. ๊ฐ์ํ ๊ตฌ์กฐ๋ฅผ ์๊ฐํ์ง ์๊ณ ์ธ๋ถ์ ์ผ๋ก ๋ดค์๋๋, ๊ฐ๊ฐ์ ์ํํธ์จ์ด๋ค์ด ๊ฐ๊ฐ์ ์๋ฒ์์ ์ด์๋๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
- ๊ธฐ์กด ๊ฐ์ํ(VM)
- ๊ฐ์ํ ์ด์ ์ ์๋์์๋ ํ๋์ ์๋ฒ์ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
๋ง ๊ตฌ๋์์ผฐ๋ค๊ณ ํ๋ค. ์ด๋ ๋ค ๋ณด๋ ํ๋์ ์๋ฒ์ ๋จ๋ ์์์ด ๋ง์๋ค. ์ด๋ฐ ๋นํจ์จ์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ธฐ์ ์ด ๊ฐ์ํ ๊ธฐ์ ์ด๋ค. ๊ทธ ์ค ํ์ดํผ๋ฐ์ด์ ๊ธฐ๋ฐ์ ๊ฐ์ํ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ด์ฉ๋์๋ค. ํ์ดํผ๋ฐ์ด์ ๋ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ๋ ๊ณต๊ฐ์์ VM ์ด๋ผ๋ ๋
๋ฆฝ๋ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค๊ณ ํธ์คํธ ์์คํ
์์ VM์ ๊น๋ฆฐ ๊ฒ์คํธOS๋ฅผ ๊ตฌ๋ ๋ฐ ๋ชจ๋ํฐ๋งํ๋ ์ญํ ์ ํ๋ค. ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณธ๋ค๋ฉด,
- VM : ๋ถํ ๊ณต๊ฐ์์์ ๊ฐ์ํ๊ฒฝ, Virtual Machine
- ํธ์คํธ ์์คํ : ์๋ฒ์ OS
- ๊ฒ์คํธ OS : VM ์ OS
- ํ์ดํผ๋ฐ์ด์ : ๊ฒ์คํธOS๋ฅผ ๊ตฌ๋ ๋ฐ ๋ชจ๋ํฐ๋ง
- ์๋ฒ๋ด์์ ๊ฐ์ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ๊ฐ์ํ๋ฅผ ์ค์ง์ ์ผ๋ก ์ํํ๋ ์ํํธ์จ์ด๊ฐ ํ์ํ๋ฐ, ์ด๋ฅผ ํ์ดํผ๋ฐ์ด์ ๋ผ๊ณ ํ๋ค. ์ด๋ฌํ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ํตํ์ฌ ๊ตฌํํ๋ ๊ฐ์ํ๋ ๊ณต๊ฐ์ VM(Virtual Machine) ์ด๋ผ๊ณ ํ๋ค.
- ๊ฐ์ํ ์ด์ ์ ์๋์์๋ ํ๋์ ์๋ฒ์ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
๋ง ๊ตฌ๋์์ผฐ๋ค๊ณ ํ๋ค. ์ด๋ ๋ค ๋ณด๋ ํ๋์ ์๋ฒ์ ๋จ๋ ์์์ด ๋ง์๋ค. ์ด๋ฐ ๋นํจ์จ์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ธฐ์ ์ด ๊ฐ์ํ ๊ธฐ์ ์ด๋ค. ๊ทธ ์ค ํ์ดํผ๋ฐ์ด์ ๊ธฐ๋ฐ์ ๊ฐ์ํ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ด์ฉ๋์๋ค. ํ์ดํผ๋ฐ์ด์ ๋ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ถํ ๋ ๊ณต๊ฐ์์ VM ์ด๋ผ๋ ๋
๋ฆฝ๋ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค๊ณ ํธ์คํธ ์์คํ
์์ VM์ ๊น๋ฆฐ ๊ฒ์คํธOS๋ฅผ ๊ตฌ๋ ๋ฐ ๋ชจ๋ํฐ๋งํ๋ ์ญํ ์ ํ๋ค. ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณธ๋ค๋ฉด,
- ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ถ๋ ๊ณต๊ฐ์์ ๋ ๋ฆฝ๋ ๊ฐ์์ ํ๋์จ์ด๋ฅผ ํ ๋น ๋ฐ์ VM๋ค์ ์๋ก์๊ฒ ์ด๋ค ์ํฅ๋ ๋ฏธ์น์ง ์๋๋ค. ์ฆ, 1๊ฐ์ ๊ฐ์ํ๊ฒฝ์์์ Error ๊ฐ ๋ค๋ฅธ ๊ฐ์ํ๊ฒฝ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค. ๊ธฐ์กด์๋ ํ๋์ ์๋ฒ์ ํ๋์ ์๋น์ค๋ง ๊ตฌ๋์์ผ์ผ ํ์ง๋ง ๋นํจ์จ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ํ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ค. ๋์ปค์ ๊ฐ์๋จธ์ ์ ํ๋์ ์๋ฒ์์ ์ฌ๋ฌ๊ฐ์ง์ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ ๋ฆฝ์ ์ธ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค์ด์ค๋ค.
- ๋์ปค์ ๊ธฐ์กด ๊ฐ์ํ ๊ธฐ์ (VM) ์ฐจ์ด
- ํ๋์ ์๋ฒ์์ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ๋ง ์ด์ํ๋ ์ ํต์ ์ธ ๋ฐฉ์์์ ํ์ดํผ ๋ฐ์ด์ ๊ธฐ๋ฐ ๊ฐ์ํ ๋ฑ์ฅ
- ํ์ดํผ ๋ฐ์ด์ ๋ ํธ์คํธ ์์คํ (์๋์ฐ, ๋ฆฌ๋ ์ค ๋ฑ)์์ ๋ค์์ ๊ฒ์คํธ OS(๊ฐ์๋จธ์ )์ ๊ตฌ๋ํ ์ ์๊ฒ ํ๋ ์ํํธ์จ์ด
- ๊ฐ VM๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๋์
- ๋์ปค๋ ํ์ดํผ ๋ฐ์ด์ ๊ตฌ์กฐ๋ฅผ ํ ๋๋ก ๋ฑ์ฅํ์ผ๋ฉฐ, VM๋ณด๋ค ํจ์ฌ ๊ฐ๋ณ๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ ๋ฆฌ!
๋์ปค์ ์ปจํ ์ด๋์ ์ด๋ฏธ์ง
- ์ด๋ฏธ์ง๋ ์ฝ๋, ๋ฐํ์, ์์คํ ๋๊ตฌ, ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ค์ ๊ณผ ๊ฐ์ ์์ฉํ๋ก๊ทธ๋จ์ ์คํ ํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ํจํค์ง์ด๋ค.
- ์ด๋ฏธ์ง๋ Github์ ์ ์ฌํ ์๋น์ค์ธ https://hub.docker.com/ ์ ํตํด ๋ฒ์ ๊ด๋ฆฌ
- ์ปจํ ์ด๋๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์
๋์ปค ํ์ผ ์ด๋?
- Dockerfile์ด๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์์ด์ผ ํ ํจํค์ง, ์์กด์ฑ, ์์ค์ฝ๋ ๋ฑ์ ํ๋์ file๋ก ๊ธฐ๋กํ์ฌ ์ด๋ฏธ์งํ ์ํฌ ๋ช ๋ น ํ์ผ
- ์ฆ, ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์๋ก์ด ์๋ฒ๊ฐ ์ถ๊ฐ๋๋ฉด ์์กด์ฑ ํ์ผ์ ์ปดํ์ผํ๊ณ ์ด๊ฒ ์ ๊ฒ ์ค์นํ ํ์๊ฐ ์๋ค.
๋์ปค ํ์ผ ์ฃผ์ ๋ช ๋ น์ด
๋์ปค ์ปดํฌ์ฆ๋?
- Docker Compose๋ ๋ฉํฐ ์ปจํ ์ด๋ ๋์ปค ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ณ ์คํํ๋ ๋๊ตฌ
- Application, Database, Redis, Nginx ๋ฑ ๊ฐ ๋ ๋ฆฝ์ ์ธ ์ปจํ ์ด๋๋ก ๊ด๋ฆฌํ๋ค๊ณ ํ์ ๋ ๋ค์ค ์ปจํ ์ด๋ ๋ผ์ดํ ์ฌ์ดํด์ ์ด๋ป๊ฒ ๊ด๋ฆฌํด์ผ ํ ๊น?
- ์ฌ๋ฌ๊ฐ์ ๋์ปค ์ปจํ ์ด๋๋ก ๋ถํฐ ์ด๋ฃจ์ด์ง ์๋น์ค๋ฅผ ๊ตฌ์ถ ๋ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ, ์คํ ์์๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌ
- docker-compose.yml ํ์ผ์ ์์ฑํ์ฌ 1ํ ์คํํ๋ ๊ฒ์ผ๋ก ์ค์ ๋ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์คํ
Docker ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ ๋ฆฌ
๋ฒ์ ํ์ธ
docker -v
์ด๋ฏธ์ง ๋ด๋ ค ๋ฐ๊ธฐ
docker pull [์ด๋ฏธ์ง ์ด๋ฆ]
ex) docker pull centos:7
์ปจํ ์ด๋ ์คํ
docker start mycentos
์ปจํ ์ด๋ ๋ด๋ถ ์ ๊ทผ
docker attach mycentos
์ปจํ ์ด๋ ์์ฑ ๋ฐ ๋ด๋ถ์ ๊ทผ
docker run -i -t --name centos7 centos:7
์ปจํ ์ด๋ ์ ์ง
docker stop centos7
์ปจํ ์ด๋ ์ ์ง ํ ๋น ์ ธ๋์ค๊ธฐ
exit
or Ctrl + D
์ปจํ ์ด๋ ์ ์งํ์ง ์๊ณ ๋น ์ ธ๋์ค๊ธฐ
Ctrl + P, Q
์ปจํ ์ด๋ ์คํ ์ค์ธ ๋ชฉ๋ก ํ์ธ
docker ps
์ปจํ ์ด๋ ๋ชจ๋ ๋ชฉ๋ก ํ์ธ
docker ps -a
์ปจํ ์ด๋ ์ด๋ฆ ๋ณ๊ฒฝ
docker rename [๋ณ๊ฒฝ ์ ์ปจํ
์ด๋ ์ด๋ฆ] [๋ณ๊ฒฝ ํ ์ปจํ
์ด๋ ์ด๋ฆ]
exec ๋ช ๋ น์ด์ฌ์ฉ์ ํตํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ปจํ ์ด๋ ๋ด๋ถ ์ ์
docker exec -i -t wordpressdb /bin/bash
Docker container & image ์ญ์ ๊ด๋ จ ๋ช ๋ น์ด
์ปจํ ์ด๋ ์ญ์
docker rm [์ปจํ
์ด๋id]
์ปจํ ์ด๋ ๋ชจ๋ ์ญ์
docker rm `docker ps -a -q`
์ด๋ฏธ์ง ์ญ์
ํ์ฌ ์ด๋ฏธ์ง ํ์ธ
docker images
์ด๋ฏธ์ง ์ญ์
docker rmi [์ด๋ฏธ์งid]
์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๊ธฐ ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ญ์
docker rmi -f [์ด๋ฏธ์งid]
๋ชจ๋ ๋์ปค ์ปจํ ์ด๋ ์ญ์ (remove all docker containers)
- ๊ตฌ๋์ค์ธ ๋ชจ๋ ๋์ปค ์ปจํ
์ด๋๋ค์ ์ค์ง์ํค๊ณ , ์ญ์
docker stop `docker ps -a -q` docker rm `docker ps -a -q`
๋ชจ๋ ๋์ปค ์ด๋ฏธ์ง ์ญ์ (remove all docker images)
- docker rmi `docker images -q`
docker image ์คํ ๋ฐ ์ต์ ์ค๋ช (ex : jenkins image ์คํ)
$ docker run -d -p 8080:8080 -v /jenkins:/var/jenkins_home –name jenkins -u root jenkins
์ ์คํ ์ปค๋ฉ๋์ ๋ํ ์ต์ ๊ฐ๋จ ์ค๋ช
-d detached mode ํํ ๋งํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋
-p ํธ์คํธ์ ์ปจํ
์ด๋์ ํฌํธ๋ฅผ ์ฐ๊ฒฐ (ํฌ์๋ฉ)
-v ํธ์คํธ์ ์ปจํ
์ด๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐ๊ฒฐ (๋ง์ดํธ)
–name ์ปจํ
์ด๋ ์ด๋ฆ ์ค์
-u ์คํํ ์ฌ์ฉ์ ์ง์
์ถ์ฒ
https://dbknowledge.tistory.com/83
https://velog.io/@kdaeyeop/%EB%8F%84%EC%BB%A4-Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4