๋ชฉ์ฐจ
ย Docker
์ปจํ
์ด๋๋ ๊ฐ์๋จธ์ ๊ณผ ๋ฌ๋ฆฌ ์ด์์ฒด์ ๋ฅผ ํธ์คํ
ํ๋๋ก ๋์ด ์์ง ์๋ค. ๋ฐ๋ผ์ docker run ubuntu๋ฅผ ์คํํ๋ฉด ubuntu ์ด๋ฏธ์ง ์ธ์คํด์ค๋ฅผ ์คํํด ์ฆ์ ์ข
๋ฃ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ปจํ
์ด๋๋ ์น ์๋ฒ, ์์ฉ ํ๋ก๊ทธ๋จ ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์คํ
ํ๊ฑฐ๋ ์ฐ์ฐ ๋๋ ๋ถ์์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์์
์ด ๋๋๋ฉด ์ปจํ
์ด๋๋ ๋น ์ ธ(exit)๋์ค๊ธฐ ๋๋ฌธ์ ์ปจํ
์ด๋๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ ์ด์์๋ ๋์ ์ด ์ ์๋ค. ์ปจํ
์ด๋ ์์ ์๋น์ค๊ฐ ๋ฉ์ถ๊ฑฐ๋ ์ถฉ๋ํ๋ฉด ์ปจํ
์ด๋๋ ์ข
๋ฃ๋๋ค.
ย Commands
์ปจํ
์ด๋ ๋ด์์ ์คํ๋๋ ํ๋ก์ธ์ค ์ ์
Dockerfile์๋ CMD๋ผ๋ instruction์ด ์กด์ฌํ๋๋ฐ ๋ช
๋ น์ ๋ปํ๋ฉฐ, ์ปจํ
์ด๋๊ฐ ์์๋ ๋ ์ปจํ
์ด๋ ์์์ ์คํ๋ ๋ช
๋ น์ ์ ์ํ๋ค. ์์๋ก NGINX ์ด๋ฏธ์ง๋ nginx, MySQL ์ด๋ฏธ์ง๋ mysqld์ด๋ค. ์์์ ๋งํ ubuntu ์ด๋ฏธ์ง์ ๋ํ Dockerfile์๋ ๊ธฐ๋ณธ ๋ช
๋ น(CMD)์ผ๋ก bash๋ฅผ ์ฌ์ฉํ๋ค. bash๋ ํ๋ก์ธ์ค๊ฐ ์๋ ํฐ๋ฏธ๋์ input์ ๋ฃ๋(listen) shell์ด๋ค. ํฐ๋ฏธ๋์ ์ฐพ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๋๋ฐ, ๊ธฐ๋ณธ์ ์ผ๋ก Docker๋ ์คํ ์ค์ผ ๋ ์ปจํ
์ด๋์ ํฐ๋ฏธ๋์ ์ฐ๊ฒฐํ์ง ์๊ธฐ ๋๋ฌธ์ bash ํ๋ก๊ทธ๋จ์ด ํฐ๋ฏธ๋์ ์ฐพ์ง ๋ชปํด ์ข
๋ฃ๋๋ค.
How to specify a different command
โข
Append a command
1.
Docker run command์ ๋ช
๋ น์ ์ถ๊ฐํจ์ผ๋ก์จ ์ด๋ฏธ์ง์ ์ง์ ๋ ๊ธฐ๋ณธ ๋ช
๋ น์ ์ฌ์ ์(Overwrite)
โข
docker run ubuntu sleep 5
โฆ
5์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์ข
๋ฃ
2.
์์๋๋ฉด sleep ๋ช
๋ น์ ํญ์ ์คํํ๋ ์ด๋ฏธ์ง๋ฅผ ์ํ๋ค๋ฉด ๊ธฐ์กด ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ์ฌ ๊ณ ์ ์ด๋ฏธ์ง ์์ฑ
โข
Dockerfile
FROM Ubuntu
CMD ["sleep", "5"]
# CMD sleep 5
Docker
๋ณต์ฌ
โฆ
shell ์์์ด๋ JSON ๋ฐฐ์ด ํฌ๋งท์ผ๋ก CMD ์์ฑ
โข
์ด๋ฏธ์ง ๋น๋ ํ ์ปจํ
์ด๋ ์คํ
โข
๋ง์ฐฌ๊ฐ์ง๋ก 5์ด ํ ์ข
๋ฃ
ย Entry points
Default
์์์ ์คํํ sleep ๋ช
๋ น์ด์ ์๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด docker run ubuntu sleep 10 ์ฒ๋ผ ๊ธฐ๋ณธ CMD๋ฅผ ์ฌ์ ์(Overwrite)ํ ์ ์์ง๋ง Dockerfile์ ENTRYPOINT๋ฅผ ์ค์ ํด ํ๋ผ๋ฏธํฐ์ ์ธ์๋ก ๋๊ฒจ์ค ์ ์๋ค.
FROM Ubuntu
ENTRYPOINT ["sleep"]
Docker
๋ณต์ฌ
docker ์ด๋ฏธ์ง๋ฅผ ubuntu-sleeper๋ผ๋ ์ด๋ฆ์ผ๋ก ๋น๋ํ์ ๋ docker run ubuntu-sleeper 10 ๋ฅผ ํตํด 10 ์ด๋ ๊ฐ์ ๋๊ฒจ์ฃผ์ด CMD๋ฅผ ์คํ ํ ์ ์๋ค.
No arguments
ENTRYPOINT๋ฅผ ์์ฑํ์ง๋ง ์ปจํ
์ด๋ ์คํ ์ ์ธ์๋ฅผ ๋๊ฒจ์ฃผ์ง ์์ผ๋ฉด missing operand ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด์ผ ํ๋๋ฐ, ๊ธฐ๋ณธ๊ฐ์ CMD ๋ฅผ Dockerfile์ ํจ๊ป ์์ฑํ๋ฉด ๋๋ค.
FROM Ubuntu
ENTRYPOINT ["sleep"]
CMD ["5"]
Docker
๋ณต์ฌ
CMD๋ฅผ ENTRYPOINT์ ํจ๊ป ์์ฑ ์, ENTRYPOINT์ ์ธ์๊ฐ ์์ ๋ CMD์ ๊ฐ์ด ์ฌ์ฉ๋๋ค. ๊ธฐ์กด ๋ช
๋ น์ด docker run ubuntu-sleeper 10์ฒ๋ผ ์ธ์๊ฐ์ ํจ๊ป ์
๋ ฅํ๋ฉด CMD๊ฐ ์ฌ์ ์๋๋ค.
Overwrite
CMD๋ฅผ ์ฌ์ ์ํ ๊ฒ ์ฒ๋ผ(docker run ubuntu sleep 10) Entrypoint๋ฅผ ์ปจํ
์ด๋ ์คํ์ ์ฌ์ ์(overwrite)ํ๋ ค๋ฉด --entrypoint ๋ฅผ ํตํด ์คํ์ํจ๋ค.
docker run --entrypoint sleep2.0 ubuntu-sleeper 10
Bash
๋ณต์ฌ
โข
sleep2.0 10 ๋ช
๋ น ์คํ
ย Pods
ย Overwriting CMD
Docker ์ด๋ฏธ์ง๊ฐ ENTRYPOINT๋ฅผ ๊ฐ์ง ๋ ์ธ์(Arguments)๋ฅผ ๋๊ฒจ์ผ ํ ๋ Pod ์ ์ ํ์ผ์์๋ args ์์ฑ์ ์ถ๊ฐํ์ฌ ์ธ์๊ฐ์ ์ค์ ํ ์ ์๋ค.
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-sleeper-pod
spec:
containers:
- name: ubuntu-sleeper
image: ubuntu-sleeper
args: ["10"]
YAML
๋ณต์ฌ
ย Overwriting ENTRYPOINT
docker run --entrypoint sleep2.0 ubuntu-sleeper 10 ์ฒ๋ผ ์ง์
์ ์ ๋ํ ์ฌ์ ์๋ฅผ ํ๊ธฐ ์ํด์๋ command ์์ฑ์ ์ถ๊ฐํ๋ค.
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-sleeper-pod
spec:
containers:
- name: ubuntu-sleeper
image: ubuntu-sleeper
command: ["sleep2.0"]
args: ["10"]
YAML
๋ณต์ฌ
ย Summary
Dockerfile์ ENTRYPOINT์ CMD๋ Kubernetes ์ ์ ํ์ผ์ command, args์ ๋์๋๋ค.
โข
ENTRYPOINT โ command
โข
CMD โ args
CMD๋ฅผ command์ ๋์์ํค์ง ์๋๋ก ์ฃผ์ํ๋ค.