Seungwoo Hong
Front-end developer
SeungwooHong
@sat10am
2019. 08. 17
๐ INDEX
์ด๋ฏธ์ง -ย ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ๋ ํ์ผ ์์คํ ๊ณผ ์ดํ๋ฆฌ์ผ์ด์ ์ค์ ์ ํ๋๋ก ํฉ์น ๊ฒ, ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ํ ํ๋ฆฟ
์ปจํ ์ด๋ -ย ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ํ์ผ ์์คํ ๊ณผ ์ดํ๋ฆฌ์ผ์ด์ ์ด ๊ตฌ์ฒดํ ๋์ด ์คํ ๋๋ ํ๋ก์ธ์ค
Dockerfile ์์๋ณด๊ธฐ [1/2]
์ธ์คํธ๋ญ์ - Dockerfile์ ๊ตฌ์ฑํ๋ ๋ช ๋ น ํค์๋
FROM - ๋์ปค ์ด๋ฏธ์ง์ ๋ฒ ์ด์ค๊ฐ ๋ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ๋ค. ์ด๋ฏธ์ง ๋น๋ ์ ๋จผ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค๋ฐ๋๋ค.
FROM: image_name:tag
ex) FROM: node:10-alpine
ย
โ๏ธ ์ด๋ฏธ์ง๋ ๋น๋ ๋ ๋๋ง๋ค ๊ณ ์ ์ ํด์๊ฐ์ ๊ฐ๋๋ฐ ์ด๋ค ์ด๋ฏธ์ง์ธ์ง ํน์ ํ๊ธฐ๊ฐ ์ด๋ ค์ ํ๊ทธ๋ฅผ ์ง์ ํ๋ค. ์ง์ ํ์ง ์์ผ๋ฉด latest ํ๊ทธ๊ฐ ์๋์ผ๋ก ๋ถ์ฌ๋๋ค.
Dockerfile ์์๋ณด๊ธฐ [2/2]
RUN : ์ปจํ ์ด๋ ์์์ ์คํํ ๋ช ๋ น์ ์ ์ํ๋ค.
ex)ย RUN: mkdir echo
COPY: ํธ์คํธ์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ ์ด๋ ์์ผ๋ก ๋ณต์ฌํ๋ค.
CMD: ์ปจํ ์ด๋ ์์์ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ง์ ํ๋ค. ์ปจํ ์ด๋๋ฅผ ์์ํ ๋ ํ ๋ฒ ์คํ ๋๋ค.ย
ex)ย COPY: server.js /echo
ex)ย CMD: ["node", "server.js"]
โ๏ธ CMD ์ธ์คํธ๋ญ์ ์ ๊ณต๋ฐฑ์ผ๋ก ๋๋ ๋ฐฐ์ด๋ก ์์ฑํ๋ค.
docker image build [Dockerfile_path]
docker image build .
โ๏ธ ย -t ย ์ต์ ์ ์ด๋ฏธ์ง๋ช ์ ์ง์ ํ๊ฒ ํด์ฃผ๋ฉฐ ์ด๋ฏธ์ง๋ช :ํ๊ทธ ์ด์ ๊ฐ์ด ํ๊ทธ๋ ํจ๊ป ์ง์ ํ ์ ์๋ค. ํ๊ทธ ์๋ต ์ latest ํ๊ทธ๊ฐ ๋ถ๋๋ค.
docker image build [Dockerfile_path]:tag
docker image build -t server:0.1
docker container run image_name:tag
docker container run echo:0.1
โ๏ธ ย -d ย ์ต์ ์ (Ctrl+C)๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ณ์ ํฌ์ด๊ทธ๋ผ์ด๋๋ก ์คํ ๋๊ฒ ๋๋๋ฐ ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ค.
โ๏ธ ย ํฌํธ ํฌ์๋ฉ
์ปจํ ์ด๋๊ฐ ์ ์์ ์ผ๋ก ์คํ ๋์ด๋ ์ปจํ ์ด๋ ๋คํธ์ํฌ๋ ๊ฒฉ๋ฆฌ ๋์ด ์์ด ํธ์คํธ์์ ์ ๊ทผ ํ ์ ์๋ค. ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ํธ์คํธ ํฌํธ์ ์ปจํฐ๋ค์ด๋ ํฌํธ๋ฅผ ์ฐ๊ฒฐํด ํต์ ์ ์ ๋ฌํ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค.
ย
-p ์ต์ ์ ์ฌ์ฉํ๋ฉด ํฌํธ ํฌ์๋ฉ์ ์ง์ ํ ์ ์๋ค.
docker container run -d -p [host_port]:[container_port] [image]
docker container run -d -p 9000:8080 echo:0.1
โ๏ธ docker [์์ ๋ช ๋ น์ด] --help
โ๏ธ docker [์์ ๋ช ๋ น์ด] --help
-f ์ต์ - ์ด๋ฏธ์ง ๋น๋๋ฅผ ํ๋ฉด ๋์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก "Dockerfile" ์ฐพ๋๋ฐ -f ๋ฅผ ๋ค์ ์ด๋ฆ์ Dockerfile์ ์ฌ์ฉํ ์ ์๋ค.
docker image build -f [Dockerfile_name]-t echo:0.1 .
docker image build -f Dockerfile-test -t echo:0.1 .
--pullย ์ต์ - FROM ์ธ์คํธ๋ญ์ ์ ์ง์ ๋ ํ๊ทธ๊ฐ latest ์ผ ๊ฒฝ์ฐ ๋ด๋ ค ๋ฐ์ ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ๋ฉด ์๋ก ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค ๋ฐ์ง ์๋๋ฐ ๊ณ์ ์๋ก ๋ด๋ ค๋ฐ๊ฒ ํ๊ธฐ ์ํด --pull์ true ํ๋ฉด ๋๋ค.
docker image build --pull=true -t echo:0.1 .
docker search [options] keyword
docker search --limit 5 mysql
โ๏ธ --limit ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ฒ์ ๋๋ ๊ฑด์๋ฅผ ์ ํํ ์ ์์ผ๋ฉฐ STARS ์์ผ๋ก ์ถ๋ ฅ ๋๋ค.
๋งจ ์ mysql ์ด๋ฏธ์ง๋ ๊ณต์ ๋ฆฌํฌ์ธ๋ฐ ๋ค์์คํ์ด์ค๋ฅผ ์ผ๋ฅ ์ ์ผ๋ก library๋ก ์ฌ์ฉ ๋๋ฉฐ ์๋ต ๊ฐ๋ฅํ๋ค.
docker image pull [options] repo_name
docker image pull mysql
docker image pull [options] repo_name
docker image pull mysql
docker image push [options] repo_name:tag
docker image push echo:latestย
๋์ปค ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ง ํ๋์ ๊ฐ์ํ๊ฒฝ์ด๋ค.
๋์ปค ์ปจํ ์ด๋๋ ์์ ์ฃผ๊ธฐ๋ 3๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
ย
์คํ ์ค ์ํ / ์ ์ง /ํ๊ธฐ
์คํ ์ค ์ํ - CMD ๋ฐ ENTRYPOINT ์ธ์คํธ๋ญ์ ์ ์ ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ ๋ ์ํ๋ฅผ ๋งํ๋ค.
ย
์ ์ง - ์ปจํ ์ด๊ฐ ์ข ๋ฃ ๋๊ณ ๋์คํฌ์ ์ปจํ ์ด๋ ์ ์ฅ๋์ด ์์ด ์ฌ์์ ํ ์ ์๋ ์ํ๋ฅผ ๋งํ๋ค.
ย
ํ๊ธฐ - ์ ์ง ์ํ์ ์ปจํ ์ด๋๋ ๋์คํฌ์ ๋จ์ ์๋ค. ์ด ๊ฒ์ ์ญ์ ํ ์ํ๋ฅผ ๋งํ๋ค.
ย
--name ์ต์ ์ ์ฌ์ฉํ๋ฉด container ์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค.
ย
docker container run --name [name] [image]
docker container run --name app echo:0.1
ย
โ๏ธ ๊ณ์ ๊ฐ์ ์ด๋ฆ์ ์ปจํ ์ด๋๋ฅผ ์๋ก ์คํ ํ๋ ค๋ฉด ์ ์ง๋ ํ๊ธฐ ๊ณผ์ ์ด ํ์ํด ์ค์ ์ด์ ํ๊ฒฝ์์๋ ์ ์ฌ์ฉ๋์ง ์๋๋ค.
--name ์ต์ ์ ์ฌ์ฉํ๋ฉด container ์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค.
ย
docker container run --name [name] [image]
docker container run --name app echo:0.1
ย
โ๏ธ ๊ณ์ ๊ฐ์ ์ด๋ฆ์ ์ปจํ ์ด๋๋ฅผ ์๋ก ์คํ ํ๋ ค๋ฉด ์ ์ง๋ ํ๊ธฐ ๊ณผ์ ์ด ํ์ํด ์ค์ ์ด์ ํ๊ฒฝ์์๋ ์ ์ฌ์ฉ๋์ง ์๋๋ค.
--rm ์ต์ ์ ์ฌ์ฉํ๋ฉด container๊ฐ ์ข ๋ฃ๋จ๊ณผ ๋์์ ์ญ์ ํ๋ค. ๊ทธ๋ ๊ธฐ๋๋ฌธ์ ๋์คํฌ์ ์์ธ container๋ฅผ ์ ๋ฆฌํ๋ ์๊ณ ๋ฅผ ๋ ์ ์๋ค.
ย
docker container run -d --rm --name app echo:0.1
ย
-i ์ต์ ์ ์ปจํ ์ด๋ ์ชฝ ํ์ค ์ ๋ ฅ๊ณผ์ ์ฐ๊ฒฐ์ ์ ์งํ๋ค.
-t ์ต์ ์ ์ ์ฌ ํฐ๋ฏธ๋ ๊ธฐ๋ฅ์ ํ์ฑํ ์์ผ์ค๋ค. ๊ทธ๋ ๊ธฐ๋๋ฌธ์ ๋ณดํต -it ์ถ์ฝํ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
ย
docker container run -d --rm -it --name app echo:0.1
docker container ls [options]
โ
โ๏ธ ์นผ๋ผ ํญ๋ชฉโ
| ย ํญ๋ชฉ | ย ๋ด์ฉ |
|---|---|
| ย CONTAINER ID | ย ์ปจํ ์ด๋ ์๋ณ์ |
| ย IMAGE | ย ์ฌ์ฉ๋ ์ด๋ฏธ์ง |
| ย COMMAD | ย ์ปจํ ์ด๋์์ ์คํ๋ ํ๋ก์ธ์ค |
| ย CREATED | ย ์์ฑ ํ ๊ฒฝ๊ณผ ์๊ฐ |
| ย STATUS | ย ์คํ ์ํ Up / Exited |
| ย PORTS | ย ํฌํธ ํฌ์๋ฉ ๊ด๊ณ |
| ย NAMES | ย ์ปจํฐ์ด๋ ์ด๋ฆ |
โ๏ธ Options
-q ์ต์ ์ ์ด๋ฏธ์ง ID๋ฅผ ์ถ์ฝ์ผ๋ก ํ์ํ๋ค.
--filter ์ต์ ฅ์ ์ปจํ ์ด๋๋ฅผ ํํฐ ํญ๋ชฉ์ ๋ฐ๋ผ ํํฐ๋ง ํ์ฌ ๋ณด์ฌ์ค๋ค.
-a ํ๊ทธ๋ ์ข ๋ฃ ๋ ์ปจํ ์ด๋๋ ํจ๊ป ๋ณด์ฌ์ค๋ค.
stop - ์ปจํ ์ด๋๋ฅผ ์ ์งํ๋ค.
rm - ์ปจํ ์ด๋๋ฅผ ํ๊ธฐํ๋ค. ๊ฐ์ ์ข ๋ฃ ์ต์ -f
restart - ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํ๋ค.
logs - ํ์ค ์ถ๋ ฅ ๋ด์ฉ์ ํ์ธ ํ ์ ์๋ค.
exec - ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํ ํ ์ ์๋ค.
cp - ์ปจํ ์ด๋๋ผ๋ฆฌ ํน์ ์ปจํ ์ด๋์ ํธ์คํธ ๊ฐ์ ํ์ผ์ ๋ณต์ฌ ํ ์ ์๋ค.
stats - ์์คํ ๋ฆฌ์์ค ์ฌ์ฉ ํํฉ์ ๋ณผ ์ ์๋ค
tag๊ฐ ๋ถ์ง ์์ ์ด๋ฏธ์ง ๋ชจ๋ ์ ๊ฑฐ
docker image prune
ย
์ ์ง๋ ์ปจํ ์ด๋ ๋ชจ๋ ์ ๊ฑฐ
docker container pruneย
ย
๋ชจ๋ ๋์ปค ๋ฆฌ์์ค ์ ๊ฑฐ
docker system prune
ย
yaml ํฌ๋งท์ผ๋ก ์ปจํ ์ด๋ ์ค์ ์ฌํญ์ ๊ธฐ์ ํ์ฌ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํ ๋ฒ์ ๊ด๋ฆฌ ํ ์ ์๋๋กย ํ๋ค.
๋์ปค ์ปดํฌ์ฆ?
yaml ํฌ๋งท์ผ๋ก ์ปจํ ์ด๋ ์ค์ ์ฌํญ์ ๊ธฐ์ ํ์ฌ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ํ ๋ฒ์ ๊ด๋ฆฌ ํ ์ ์๋๋กย ํ๋ค.
๋์ปค ์ปดํฌ์ฆ๋ก ์ปจํ ์ด๋ ์คํ
By Seungwoo Hong