Search

[CKA] 28. Application Commands

Date
2024/12/10
Category
Devops
Tag
Kubernetes
CKA
Management
๋ชฉ์ฐจ

ย 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์— ๋Œ€์‘์‹œํ‚ค์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค.