Docker
HTTP Status Code? ๐ฏ
๊ฐ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
์ด์ ๋ ํฅ์๋ ์ปดํจํฐ์ ์ฑ๋ฅ์ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ์ํ ๊ธฐ์ ์ด ๋ง์ด ๋ฑ์ฅํ๋ค. ์๋ฒ ๊ด๋ฆฌ์ ์ ์ฅ์์ CPU์ฌ์ฉ๋ฅ ์ด 10%๋ ๋ฐ์ ๋์ง ์๋ ํ์ฉ๋๊ฐ ๋ฎ์ ์๋ฒ๋ค์ ๋ฆฌ์์ค ๋ญ๋น์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋ชจ๋ ์๋น์ค๋ฅผ ํ ์๋ฒ์์ ์ฌ๋ฆฐ๋ค๋ฉด ์์ ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ์๋ ์๋ค. ๊ทธ๋์ ์์ ์ฑ์ ๋์ด๋ฉฐ ๋ฆฌ์์ค๋ ์ต๋ํ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ํ๋๊ฒ ์๋ฒ ๊ฐ์ํ์ด๋ค. ๋ชจ๋๊ฐ ์๋ ๋ํ์ ์ธ ๊ฐ์ํ ํ๋ซํผ์ผ๋ก๋ VM์ด ์๋ค.
๊ธฐ์กด์ ์ฐ๋ฆฌ์๊ฒ ์ต์ํ VM๊ฐ์ ๊ฒฝ์ฐ์ Host OS ์์ ๊ฐ์ํ๋ฅผ ์ํค๊ธฐ ์ํ Hypervisor ์์ง ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ Guest OS๋ฅผ ์ฌ๋ ค ์ฌ์ฉํ๋ค. ์ด๋ ๊ฐ์ํ๋ ํ๋์จ์ด ์์ OS๊ฐ ์ฌ๋ผ๊ฐ๋ ํํ๋ก ๊ฑฐ์ ์๋ฒฝํ๊ฒ Host์ ๋ถ๋ฆฌ๋๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค. ๋ฐ๋ฉด์ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ๋ Docker ์์ง ์์ Application ์คํ์ ํ์ํ ๋ฐ์ด๋๋ฆฌ๋ง ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค. OS ๊ฐ์ํ๋ฅผ ๋ณด๋ฉด Host OS์ ์์ ํ ๋ถ๋ฆฌ๋๋ ์ฅ์ ์ ์์ง๋ง OS์์ OS๋ฅผ ์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฌด๊ฒ๊ณ ๋๋ฆด์ ๋ฐ์ ์๋ค. ํ์ง๋ง ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ๋ Host OS ๊ทธ๋ฆฌ๊ณ Docker ์์ง์์์ ๋ฐ๋ก ๋์ํ๋ฉฐ Host์ ์ปค๋์ ๊ณต์ ํ๋ค. ์ปค๋์ ๊ณต์ ํ๊ฒ ๋๋ฉด io์ฒ๋ฆฌ๊ฐ ์ฝ๊ฒ ๋์ด ์ฑ๋ฅ์ ํจ์จ์ ๋์ผ ์ ์๋ค. ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์ ๋จธ์ ์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ Host OS๊ฐ ์ฌ์ฉํ๋ ์์์ ๋ถ๋ฆฌํ์ฌ ์ฌ๋ฌ ํ๊ฒฝ์ ๋ง๋ค ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
OS๊ฐ์ํ๋ ์ปจํ ์ด๋๊ธฐ๋ฐ ๊ฐ์ํ๋ณด๋ค ๋ ๋์ ๊ฒฉ๋ฆฌ ๋ ๋ฒจ์ ์ง์ํ๋ค. ์ด๋ ๋ณด์์ ์ธ ์ธก๋ฉด์์ ๋์ฑ ์ ๋ฆฌํ๋ค. ๋ํ OS๊ฐ์ํ์ ์ปค๋์ ๊ณต์ ํ์ง ์๋ ์ฅ์ ๋ํ ์๋ค. ์ปค๋์ ๊ณต์ ํ์ง ์๋ ๋งํผ ๋ฉํฐ OS๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. ์ปค๋์ ๊ณต์ ํ์ง ์์ ๋ฉํฐ OS๊ฐ ๋ถ๊ฐ๋ฅ ํ๋ค๋ ๊ฒ์ Linux์์ Window๋ฅผ ์ฌ๋ฆด ์ ์๋ค๋ ๋จ์ ์ด ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ์๋ Docker๋ฅผ ์ฐ๋ ์ด์ ๋ ์ฑ๋ฅํฅ์, ๋ฐ์ด๋ ์ด์์ฑ, ์ฝ๊ฒ Scale Out์ ํ ์ ์๋ ์ ์ฐ์ฑ์ด๋ผ๊ณ ์๊ฐ๋๋ค.
์ค์ตํ๊ธฐ๐บ
- Docker install(Ubantu)
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
- ๋ช ๋ น์ด
docker
docker ps
#(์คํ์ค์ธ ์ปจํ
์ด๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปค๋งจ๋)
docker ps -a
#(์คํ์ด ์ข
๋ฃ๋ ๊ฒ์ ํฌํจํด์ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋ณด๋ ์ปค๋งจ๋ ๋ฐ ์ต์
)
docker images
#(์์ฑ๋ ํน์ ๋ค์ด๋ก๋ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปค๋งจ๋)
docker images -a
#(๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปค๋งจ๋ ๋ฐ ์ต์
)
docker start ์ปจํ
์ด๋๋ช
docker stop ์ปจํ
์ด๋๋ช
- ๋์ปคํ๋ ค๋ ํด๋์ Dockerfile ๋ง๋ค๊ธฐ
#./Dockerfile
FROM node:14
# ๊ธฐ๋ฐ์ด ๋ ์ด๋ฏธ์ง
# ์์
๋๋ ํ ๋ฆฌ(default) ์ค์
WORKDIR /usr/src/app
## Install packages
# ํ์ฌ ํจํค์ง ์ค์น ์ ๋ณด๋ฅผ ๋์ปค ์ด๋ฏธ์ง์ ๋ณต์ฌ. package-lock.json๋ ๋ณต์ฌํ๋ ๊ฒ์ด ์์ .
COPY package*.json ./
# ํ๋ฆฌ์ฆ๋ง ์คํค๋ง์ ์์น๋ฅผ ํ ๋๋ ํ ๋ฆฌ ์์๋ก ์ด๋ํ์ฌ ๋ณต์ฌ
COPY ./prisma/schema.prisma ./
# ์ค์น์ ๋ณด๋ฅผ ์ฝ์ด ๋ค์ฌ์ ํจํค์ง๋ฅผ ์ค์น
RUN npm install
## Copy all src files
# ํ์ฌ ๊ฒฝ๋ก์ ์กด์ฌํ๋ ๋ชจ๋ ์์คํ์ผ์ ์ด๋ฏธ์ง์ ๋ณต์ฌ
COPY . .
## Run the application on the port 8000
# 8000๋ฒ ํฌํธ๋ฅผ ์ธ๋ถ์ ๊ฐ๋ฐฉํ๋๋ก ์ค์
EXPOSE 8000
# === ๋์ปค๊ฐ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋์ ๋ช
๋ ์ด
CMD ["npm", "start"]
# ========== ์ด๋ฏธ์ง๊ฐ ์คํ๋์ ๋ ์ฒ์์ ์คํ๋ ๋ช
๋ น์ด
- ๋์ปคํ์ผ์ ์ด์ฉํด ์ด๋ฏธ์ง ๋น๋ ํ๊ธฐ
docker build -t '๋์ปคํ๋ธ์ ๊ฐ์
ํ ๊ณ์ ๋ช
'/'์ด๋ฏธ์ง๋ช
(ํ๋ก์ ํธ๋ช
๊ถ์ฅ)':'๋ฒ์ ' .
ex) docker build -t clzlsqkq/justdoit:0.1.0 .
๋ง์ง๋ง์ .์ ์์น๋ฅผ ๋ํ๋ด๋๊ฒ์ผ๋ก ๊ผญ ์ ์ด์ฃผ์ด์ผํ๋ค.
- ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํด๋ณด๊ธฐ
docker run --name '์ปจํ
์ด๋ ๋ช
' -d'๋ฐ๋ชฌ์ผ๋ก ์คํํ๊ธฐ ์ํ ์ต์
' -p 'ํธ์คํธ ํฌํธ':'์ปจํ
์ด๋ ํฌํธ' '์ด๋ฏธ์ง๋ช
'
ex) docker run --name justdoit01 -d -p 8000:8000 clzlsqkq/justdoit:0.1.0
์ ์คํ๋๊ณ ์๋ ๋ชจ์ต.
- ์ปจํ ์ด๋ ์ ๋ถ ์ญ์ ํ๋ ๋ช ๋ น์ด
docker rm $(docker ps -a -q)
#UBUNTU
sudo docker rm $(sudo docker ps -a -q)
- ์ด๋ฏธ์ง ์ ๋ถ ์ญ์ ํ๋ ๋ช ๋ น์ด
docker rmi $(docker images -q)
#ubuntu
sudo docker rmi $(sudo docker images -q)
----------------------------------*์ฐธ๊ณ *----------------------------------
RDS๊ฐ ์๋ ๋ก์ปฌ DB๋ ์ฐ๊ฒฐ์ ํ๊ณ ์ถ๋ค๋ฉด
โ์ด๊ณณโ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
Docker ์ปจํ ์ด๋ ๋ด์์ localhost๋ ์ปจํ ์ด๋ ์์ ์ ์ฃผ์์ด๊ธฐ ๋๋ฌธ์ ํธ์คํธ OS(macOS) ์์์ ์คํ์ค์ธ DB์ ์ฐ๊ฒฐ์ด ์๋๋๋ฐ
sudo docker run --net=host -p "3306" --name justdoit04 -d -p 8000:8000 clzlsqkq/justdoit:0.1
์ด๋ ๊ฒ ์คํ ์ํค๋ฉด ์์ฃผ ์ ์ฐ๊ฒฐ๋๋๊ฒ์ ๋ณผ ์ ์๋ค.ใ ใ