๋ฆฌ๋
์ค ์ปจํ
์ด๋ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์คํ ์์ค ์๋น์ค
์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌ
๋
๋ฆฝ์ ์ธ ์คํํ๊ฒฝ
์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒฉ๋ฆฌ๋ ์ํํธ์จ์ด ์ ๋(node.js code + node.js runtime)
์ด๋ฏธ์ง์๋ ์ฝ๋, ์ค์ , ์ฌ๋ฌ ๊ฒ๋ค์ด ํฌํจ๋๋ฉฐ ์ปจํ
์ด๋๋ ๊ทธ ์ด๋ฏธ์ง์ ์คํ ์ธ์คํด์ค์ด๋ค.
constains code + required tools/runtimes
ํ๋์ image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ container๋ฅผ ์คํํ ์ ์๋ค.
์ฝ๊ธฐ/์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์๋ ์ธ์คํด์ค๋ฅผ ์คํํ๋ ์ปจํ
์ด๋์ Templates/Blueprints
์ด๋ฏธ์ง์ ๋ชจ๋ ๋ช
๋ น์ cache๊ฐ๋ฅํ ๋ ์ด์ด๋ฅผ ์์ฑํ๋ค.
๋ ์ด์ด๋ ์ด๋ฏธ์ง ์ฌ๊ตฌ์ถ ๋ฐ ๊ณต์ ๋ฅผ ๋๋๋ค.
์ด๋ฏธ์ง ๊ตฌ๋ถ Registry_Account/Repository_Name:Tag
docker (image) pull $Registry_Account/Repository_Name:Tag
: ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์จ๋ค.
docker image ls
: ์ด๋ฏธ์ง ๋ฆฌ์คํธ
docker (container) run $image
: image๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋ ์์ฑ & ์คํ
docker (container) run -it $image
: ์ฌ์ฉ์์ ์ปจํ
์ด๋ ๊ฐ์ ์ธํฐ๋ ์
์ด ํ์ํ ๋์ ์ต์
docker (container) ps
: ํ์ฌ ์คํ ์ค์ธ ์ปจํ
์ด๋์ ์ ๋ณด ํ์
docker (container) ps -a
: docker๊ฐ ์์ฑํ ๋ชจ๋ ์ปจํ
์ด๋, ๋ชจ๋ ํ๋ก์ธ์ค ํ์
docker container rm $NAMES
: ํด๋น ์ปจํ
์ด๋ ์ญ์
docker image rm $image
: ํด๋น ์ด๋ฏธ์ง ์ญ์ (์ด๋ฏธ์ง ์์ ์ปจํ
์ด๋๊ฐ ์์ ๋ ์ญ์ ๊ฐ๋ฅ)
docker stop $NAMES
์คํ์ค์ธ docker์ค์ง
์น ์๋ฒ๋ ๋์ปค ์ปจํ ์ด๋๋ก ์คํํ๊ณ , ์น ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ํ์ผ์ ์ง์ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์จ ํ์ผ ๊ตฌ์ฑ
๋ก์ปฌ์ ์๋ ํ์ผ๊ณผ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ
httpd(http daemon) : Apache HTTP Server๋ฅผ ์คํํ ์ ์๋ ์คํ์์ค ์น ์๋ฒ ์ํํธ์จ์ด
docker container run --name $NAMES -p 818:80 httpd
: local port 818๊ณผ container port 80์ ์ฐ๊ฒฐํ๋ค.
docker container cp ./ $NAMES:/usr/local/apache2/htdocs/
: localhost์ ์๋ ํ์ผ์ ์ปจํ
์ด๋์ ์ ๋ฌํ๋ค.
์ฃผ์!์ ๊ฒฝ๋ก(./)์ ํ์ผ์ ๋ค๊ฒฝ๋ก์ ๋ณต์ฌํ๋ค.
docker exec -it $NAMES bash
: ์ปจํ
์ด๋ ๋ด๋ถ ํฐ๋ฏธ๋๋ก ์ ์, root@$containerID:/usr/local/apache2# ์ถ๋ ฅ
docker container commit $NAMES $Repository:$Tag
docker run --name $์๋ก๋ง๋ค์ปจํ
์ด๋์ด๋ฆ -p 900:80 $Repository:$Tag
: ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ 900ํฌํธ์์ ์น์๋ฒ๋ก ๊ตฌ๋
=> 127.0.0.1:900 ๋๋ localhost:900์์ ์น์๋ฒ๊ฑฐ ์๋ํ๋์ง ํ์ธํ ์ ์๋ค.
< ์ด๋ฏธ์ง๋ฅผ ์ ํ ํ๊ธฐ ์ํ ์ฝ๋(์ปจํ ์ด๋์ ํ ํ๋ฆฟ) >
FROM node(node์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ด)
WORKDIR /app(์์
๋๋ ํ ๋ฆฌ)
COPY package.json /app(์์ค์ฝ๋์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋ ๊ณ์ ์ค์น๋๋ ๊ฒ์ ๋ฐฉ์ง)
RUN npm install(๋ชจ๋ ์ข
์์ฑ์ ์ค์น)
COPY ./app(์ฒ์ โ.โ์ ํ์ฌ ํด๋์ ๋ชจ๋ ํ์ผ, โ/appโ์ ์ฎ๊ธธ ์ฅ์)
EXPOSE 80(์ปจํ
์ด๋์ ํ๋ก์ธ์ค๊ฐ ์ด ํฌํธ๋ฅผ ๋
ธ์ถํ ๊ฒ์์ ๋ฌธ์ํ)
CMD [โnodeโ, โserver.jsโ](์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋๊ฐ ์์๋ ๋ ์คํ)
docker build .
: Dockerfile์ ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋ ๋น๋
docker run -p 3000:80 $containerID
: local port 3000์ ๋ด๋ถ ๋์ปค ์ปจํ
์ด๋์ ํฌํธ์ธ 80์ ๋
ธ์ถํ๊ณ publishํ๋ค.
(CMD์ ์ํด์ ์์์ ๋ง๋ ์ปจํ
์ด๋๊ฐ ์คํ์ค..)