๐ณ Docker?
- Docker๋ ์ปจํ
์ด๋ ๊ธฐ๋ฐ์ ๊ฐ์ํ ํ๋ซํผ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ทธ ์คํํ๊ฒฝ์ ํ๋์ ํจํค์ง๋ก ๋ฌถ์ด ๋ฐฐํฌํ๊ณ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
- ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ํด์ด๋ค.
Docker๋ฅผ ์ฌ์ฉํ๋ ์ด์
โ
๊ฐ๋ฐํ๊ฒฝ ํต์ผ (์ด์์ฑ)
- ์ด๋์๋ ๋์ผํ ์คํํ๊ฒฝ ๋ณด์ฅ
โ
๋น ๋ฅธ ๋ฐฐํฌ / ๋กค๋ฐฑ
- ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํด๋๋ฉด ํ์ํ ๋ ๋ฐ๋ก ์คํ
- ์ด์ ๋ฒ์ ์ผ๋ก๋ ๋น ๋ฅด๊ฒ ๋ณต์ ๊ฐ๋ฅ
โ
๊ฒฝ๋ํ
- ๊ธฐ์กด VM(๊ฐ์ ๋จธ์ )๋ณด๋ค ๊ฐ๋ณ๊ณ ๋น ๋ฆ
- OS ์ ์ฒด๋ฅผ ์ฌ๋ฆฌ๋๊ฒ ์๋๋ผ ์ปค๋ ๊ณต์
โ
MSA(๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ)์ ์ ํฉ
- ๊ฐ ์๋น์ค๋ง๋ค ๋
๋ฆฝ ์ปจํ
์ด๋๋ก ์คํ ๊ฐ๋ฅ
ํต์ฌ ๊ฐ๋
์ด๋ฏธ์ง
- ์คํ ๊ฐ๋ฅํ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํ
ํ๋ฆฟ(์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๊ฒฝ ์ค์ ๋ฑ ํฌํจ)
์ปจํ
์ด๋(Container)
- ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ค์ ์ธ์คํด์ค. ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์๊ฐ๋ ๋จ์
Dockerfile
- ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค์ ํ์ผ(์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๋น๋ํ ์ง ๋ฑ)
DockerHub
- ๊ณต๊ฐ ์ด๋ฏธ์ง ์ ์ฅ์. GitHub์ฒ๋ผ Docker ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๊ณ ๋ฐ์ ์ ์์
Volumn
- ์ปจํ
์ด๋์ ํธ์คํธ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ /๋ณด์กด์ ์ํ ๊ธฐ๋ฅ
Port Mapping
- ์ธ๋ถ์์ ์ปจํ
์ด๋ ์ ๊ทผ ์ ํฌํธ๋ฅผ ๋งคํํด์ฃผ๋ ๊ธฐ๋ฅ
Docker ์ค์น
Window
Mac
Docker ๊ธฐ๋ณธ ๋ช
๋ น์ด ์์
docker pull nginx
: ๋์ปค์ nginx ๋ค์ด๋ก๋ (๊ฐ์ฅ ์ต์ ๋ฒ์ : lastest)
docker image ls
: ๋์ปค์ ์๋ image์กฐํ
docker run --name webserver -d -p 80:80 nginx
: ๋ค์ด๋ฐ์ nginx๋ฅผ webserver๋ผ๋ ์ด๋ฆ์ผ๋ก ์คํ
docker ps
: ์คํ์ค์ธ ์ปจํ
์ด๋ ํ์ธ
docker stop webserver
: name์ด webserver์ธ ์ปจํ
์ด๋ ์ข
๋ฃ
docker image rm (-f) [์ด๋ฏธ์ง ID ๋๋ ์ด๋ฏธ์ง๋ช
]
: ๋์ปค ์ด๋ฏธ์ง ์ญ์ ๋งจ๋ค๋ IMAGE ID ์ด๋ค. (์ ์ฒด๊ฐ ์๋ ์ผ๋ถ๋ง ์ณ๋ ์ญ์ ๊ฐ ๋๋ค), -f๋ฅผ ๋ฃ์ผ๋ฉด ์ค๋จ๋ ์ปจํ
์ด๋์ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ๊ฐ์ ์ญ์ ๋ฅผ ํ๋ค.
์ ์ฒด ์ด๋ฏธ์ง ์ญ์
- โญ๏ธ
docker image rm $(docker images -q)
: ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์์ง ์์ ์ด๋ฏธ์ง๋ง ์ ์ฒด ์ญ์
- โญ๏ธ
docker image rm -f $(docker images -q)
: ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฏธ์ง๋ฅผ ํฌํจํด์ ์ด๋ฏธ์ง ์ ์ฒด ์ญ์
โญ๏ธ ์ปจํ
์ด๋ ์์ฑ + ์คํ
docker run ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
: ๋์ปค ์์ฑ
docker start [์ปจํ
์ด๋ ID]
: ํด๋น์ปจํ
์ด๋ ์คํ
# ์ปจํ
์ด๋ ์์ฑ ๋ฐ ์คํํ๊ธฐ
# docker run ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
docker run nginx #ํฌ๊ทธ๋ผ์ด๋์์ ์คํ #์ถ๊ฐ์ ์ธ ๋ช
๋ น์ด ์กฐ์ ๋ถ๊ฐ
docker run -d nginx #๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
# ์ปจํ
์ด๋์ ์ด๋ฆ ๋ถ์ฌ์ ์์ฑ ๋ฐ ์คํํ๊ธฐ
#docer run -d --name [์ปจํ
์ด๋ ์ด๋ฆ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
docker run -d --name my-web-server nginx
โญ๏ธ ์ปจํ
์ด๋ ์ค๋จ ๋ฐ ์ญ์
#์ปจํ
์ด๋ ์ค๋จ ํ ์ญ์ ํ๊ธฐ
docker ps #์คํ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
docker stop {์คํ์ํจ ์ปจํ
์ด๋ ID} #์ปจํ
์ด๋ ์ค๋จ
docker rm {์คํ์ํจ ์ปจํ
์ด๋ ID} #์ปจํ
์ด๋ ์ญ์
docker image rm ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
] #์ด๋ฏธ์ง ์ญ์
docker ps
: ์คํ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
docker stop {์คํ์ํจ ์ปจํ
์ด๋ ID}
: ์ปจํ
์ด๋ ์ค๋จ
docker rm {์คํ์ํจ ์ปจํ
์ด๋ ID}
: ์ปจํ
์ด๋ ์ญ์
docker image rm ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
: ์ด๋ฏธ์ง ์ญ์
โญ๏ธ ๋์ปค ์คํ ํฌํธํฌ์๋ฉ
# docker run -d -p [ํธ์คํธํฌํธ]:[์ปจํ
์ด๋ ํฌํธ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
docker run -d -p 4000:80 nginx
docker run -d -p 4000:80
: ๋์ปค๋ฅผ ์คํํ๋ ํธ์คํธ์ 4000๋ฒ ํฌํธ๋ฅผ ์ปจํ
์ด๋์ 80ํฌํธ๋ก ์ฐ๊ฒฐ (localhost:4000 ์ผ๋ก ์ ์ ๊ฐ๋ฅ)
โญ๏ธ ์ปจํ
์ด๋ ์กฐํ
docker ps #์คํ์ค์ธ ์ปจํ
์ด๋๋ค๋ง ์กฐํ
docker ps -a #์คํ์ค + ์คํ์ค์ด ์๋ ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ
docker ps
: ์คํ์ค์ธ ์ปจํ
์ด๋ ์ ์ฒด ์กฐํ
docker ps -a
: ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ (์คํ์ค์ด ์๋ ์ปจํ
์ด๋ + ์คํ์ค์ธ ์ปจํ
์ด๋)
โญ๏ธ ์ปจํ
์ด๋ ์ญ์
docker rm ์ปจํ
์ด๋๋ช
๋๋ ์ปจํ
์ด๋ ID #์ค์ง๋์ด ์๋ ํน์ ์ปจํ
์ด๋ ์ญ์
docker rm -f ์ปจํ
์ด๋๋ช
๋๋ ์ปจํ
์ด๋ ID #์คํ๋๊ณ ์๋ ํน์ ์ปจํ
์ด๋ ์ญ์
docker rm $(docker ps -qa) #์ค์ง๋์ด์๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
docker rm -f $(docker ps qa) #์คํ๋๊ณ ์๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
docker rm ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ID]
: ์ค์ง๋์ด ์๋ ํน์ ์ปจํ
์ด๋ ์ญ์ (์คํ ์ค์ธ ์ปจํ
์ด๋๋ ์ค์งํ ํ์ ๋ ์ญ์ ๊ฐ ๊ฐ๋ฅ.)
docker rm -f ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ID]
: ์คํ๋๊ณ ์๋ ํน์ ์ปจํ
์ด๋ ์ญ์
docker rm $(docker ps -qa)
: ์ค์ง๋์ด์๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
docker rm -f $(docker ps -qa)
: ์คํ๋๊ณ ์๋ ๋ชจ๋ ์ปจํ
์ด๋ ์ญ์
โญ๏ธ ๋์ปค ๋ก๊ทธ ์ถ๋ ฅ
docker logs [์คํ์ค์ธ ์ปจํ
์ด๋ ID] #ํน์ ์ปจํ
์ด๋์ ๋ชจ๋ ๋ก๊ทธ ์กฐํ
#docker logs --tail [๋ก๊ทธ ๋๋ถํฐ ํ์ํ ์ค ์] [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
docer logs --tail 10 [์ปจํ
์ด๋ID ๋๋ ์ปจํ
์ด๋๋ช
] #์ต๊ทผ ๋ก๊ทธ 10์ค๋ง ์กฐํ
docker logs -f [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
] #๊ธฐ์กด ๋ก๊ทธ + ์ดํ ์ค์๊ฐ ๋ก๊ทธ
docker logs --tail -0 -f [์ปจํ
์ด๋ID ๋๋ ์ปจํ
์ด๋๋ช
] #์์ผ๋ก ์์ฑ๋ ์ค์๊ฐ ๋ก๊ทธ๋ง ๋ณด๊ธฐ
docker logs [์คํ์ค์ธ ์ปจํ
์ด๋ID]
: ํน์ ์ปจํ
์ด๋์ ๋ชจ๋ ๋ก๊ทธ ์กฐํ
docker logs --tail 10 [์ปจํ
์ด๋ID ๋๋ ์ปจํ
์ด๋๋ช
]
: ์ต๊ทผ ๋ก๊ทธ 10์ค ์กฐํ
docker logs -f [์ปจํ
์ด๋ID ๋๋ ์ปจํ
์ด๋๋ช
]
: ๊ธฐ์กด ๋ก๊ทธ ์ถ๋ ฅ ํ, ์ดํ ์ค์๊ฐ ๋ก๊ทธ ์ถ๋ ฅ
docker logs --tail -0 -f [์ปจํ
์ด๋ID ๋๋ ์ปจํ
์ด๋๋ช
]
: ์์ผ๋ก ์์ฑ๋ ์ค์๊ฐ ๋ก๊ทธ๋ฐ ๋ณด๊ธฐ(๊ธฐ์กด๋ก๊ทธX)
โญ๏ธ ์คํ์ค์ธ ์ปจํ
์ด๋ ๋ด๋ถ ์ ์(exec -it)
# docker exec -it ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ID] bash
docker run -d nginx
docker exec -it [Nginx๊ฐ ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋ID] bash
ls #์ปจํ
์ด๋ ๋ด๋ถ ํ์ผ ์กฐํ
cd /etx/nginx
cat nginx.conf
exit
- ์ปจํ
์ด๋ ๋ด๋ถ์์ ๋์ค๋ ค๋จผ
Ctrl + D
๋๋ exit
์ ์
๋ ฅํ๋ฉด ๋๋ค
bash
: ์(Shell)์ ์ผ์ข
-it
: -it
์ต์
์ ์ฌ์ฉํด์ผ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค. -it
์ต์
์ ์ ์ง ์์ผ๋ฉด ๋ช
๋ น์ด๋ฅผ 1๋ฒ๋ง ์คํ์ํค๊ณ ์ข
๋ฃ๋์ด ๋ฒ๋ฆฐ๋ค. (-it
์ต์
์ ์ ์ด์ผ ๊ณ์ํด์ ๋ช
๋ น์ด ์
๋ ฅ๊ฐ๋ฅ)