Docker - newlife-js/Wiki GitHub Wiki

์ฐธ๊ณ : ๊ทธ๋ฆผ๊ณผ ์‹ค์Šต์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋„์ปค & ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

๋„์ปค๋ž€?

๋ฐ์ดํ„ฐ ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ
๊ฐœ๋ฐœํ™˜๊ฒฝ, ์‹คํ–‰ํ™˜๊ฒฝ ๋“ฑ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” pc/์„œ๋ฒ„ ํ™˜๊ฒฝ๊ณผ ์ด์— ๋”ฐ๋ฅด๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฒฉ๋ฆฌ
ํ”„๋กœ๊ทธ๋žจ๋ณ„๋กœ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „, ์ข…๋ฅ˜(์›น์„œ๋ฒ„, DB ๋“ฑ), Config๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ํ•œ ์„œ๋ฒ„์—์„œ ๋ชจ๋‘ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด,
๊ฐœ๋ฐœํ•  ๋•Œ ํ†ต์ผ๋œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ์—ฌ๋Ÿฟ์ด ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

VM vs ๋„์ปค

VM์€ ํ˜ธ์ŠคํŠธ OS ์œ„์— ๋ณ„๋„์˜ OS๋ฅผ ์„ค์น˜
๋„์ปค๋Š” OS(์ปค๋„)๋ฅผ ํ˜ธ์ŠคํŠธ์™€ ๊ณต์œ 
๋„์ปค๋Š” ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„ - ๋ฆฌ๋ˆ…์Šค OS - ๋„์ปค ์—”์ง„ - ์ปจํ…Œ์ด๋„ˆs๋กœ ๊ตฌ์„ฑ
image ์ถœ์ฒ˜: https://velog.io/@miintto/docker-engine

โ€ป ๋„์ปค๋Š” ๋ฆฌ๋ˆ…์Šค ์œ„์—์„œ๋งŒ ๋Œ์•„๊ฐ€๋ฉฐ, ์œˆ๋„์šฐ์šฉ ๋„์ปค๋„ linux ๋จธ์‹  ์œ„์—์„œ ๊ตฌ๋™๋˜๋Š” ๊ตฌ์กฐ. ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ํ˜ธ์ŠคํŠธ OS์˜ ์ปค๋„์„ ๊ณต์œ ํ•˜๋ฉฐ, OS์˜ ์ฃผ๋ณ€๋ถ€๋งŒ ๊ฐ์ž ๊ฐ€์ง€๊ณ  ๋™์ž‘

์ด๋ฏธ์ง€(image)

์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ๋Š” ๋นตํ‹€, ์„ค๊ณ„๋„ ์—ญํ• 
๋„์ปค ํ—ˆ๋ธŒ(https://hub.docker.com)์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐœ์กฐํ•œ ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Œ
๋น„๊ณต๊ฐœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

๋ช…๋ น์–ด

docker image ํ•˜์œ„_์ปค๋งจ๋“œ [์˜ต์…˜]  

pull ์ด๋ฏธ์ง€_์ด๋ฆ„: ์ด๋ฏธ์ง€ ๋‚ด๋ ค๋ฐ›๊ธฐ  
rm ์ด๋ฏธ์ง€_์ด๋ฆ„: ์ด๋ฏธ์ง€ ์‚ญ์ œ
ls: ์ด๋ฏธ์ง€ ๋ชฉ๋ก
build ์ด๋ฏธ์ง€_์ด๋ฆ„: ์ด๋ฏธ์ง€ ์ƒ์„ฑ

์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  • ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“ค๊ธฐ
docker commit ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„ ์ด๋ฏธ์ง€_์ด๋ฆ„
  • Dockerfile ์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค๊ธฐ
    ์žฌ๋ฃŒํด๋” ์•ˆ์— Dockerfile์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ์ด ํ•„์š”
    ์ถ”๊ฐ€์ ์œผ๋กœ ํ•จ๊ป˜ ๋„ฃ๊ณ  ์‹ถ์€ ํŒŒ์ผ๋“ค์„ ์žฌ๋ฃŒํด๋” ์•ˆ์— ์œ„์น˜
    Dockerfile์•ˆ์—์„œ ํŒŒ์ผ์„ ์–ด๋””์— ๋ฐ”์ธ๋”ฉ์‹œํ‚ฌ์ง€ ์ง€์ •ํ•จ
docker build -t ์ด๋ฏธ์ง€_์ด๋ฆ„ ์žฌ๋ฃŒํด๋”_๊ฒฝ๋กœ

@Dockerfile
FROM ์ด๋ฏธ์ง€์ด๋ฆ„
COPY ํŒŒ์ผ์ด๋ฆ„ ๋ฐ”์ธ๋”ฉ_๊ฒฝ๋กœ

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—…๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•จ

docker tag ์ด๋ฏธ์ง€_์ด๋ฆ„ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ_์ฃผ์†Œ/๋ฆฌํฌ์ง€ํ† ๋ฆฌ_์ด๋ฆ„:๋ฒ„์ „
docker push ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ_์ฃผ์†Œ/๋ฆฌํฌ์ง€ํ† ๋ฆฌ_์ด๋ฆ„:๋ฒ„์ „

์ปจํ…Œ์ด๋„ˆ(container)

์ด๋ฏธ์ง€๋กœ ๋ณต์ œํ•ด๋‚ธ ๊ฒฉ๋ฆฌ๋œ ํ”„๋กœ๊ทธ๋žจ ํ™˜๊ฒฝ

๋ช…๋ น์–ด

docker (container) ํ•˜์œ„_์ปค๋งจ๋“œ [์˜ต์…˜]  

run ์ด๋ฏธ์ง€_์ด๋ฆ„: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰(pull + create + start)
create ์ด๋ฏธ์ง€_์ด๋ฆ„ [--name ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„]: ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
start ID(or ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„): ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
stop ID(or ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„): ์ปจํ…Œ์ด๋„ˆ ์ •์ง€
rm ID(or ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„): ์ •์ง€๋œ ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
exec ID(or ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„) ์ปค๋งจ๋“œ: ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์†์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰  
ls: ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก(container ์ƒ๋žต ์‹œ docker ps)
cp ํ˜ธ์ŠคํŠธ_๊ฒฝ๋กœ ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„:์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋กœ: ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ ๊ฐ„ ํŒŒ์ผ ๋ณต์‚ฌ(์ˆœ์„œ ๋ฐ˜๋Œ€๋กœ ํ•˜๋ฉด ๋ฐ˜๋Œ€๋กœ ๋ณต์‚ฌ)
commit ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„ ์ด๋ฏธ์ง€_์ด๋ฆ„: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜

run ์˜ต์…˜

--name ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ง€์ •
-p ํ˜ธ์ŠคํŠธ_ํฌํŠธ๋ฒˆํ˜ธ:์ปจํ…Œ์ด๋„ˆ_ํฌํŠธ๋ฒˆํ˜ธ: ํฌํŠธ๋ฒˆํ˜ธ ์ง€์ •
-v ํ˜ธ์ŠคํŠธ_๊ฒฝ๋กœ:์ปจํ…Œ์ด๋„ˆ_๊ฒฝ๋กœ: ๋ณผ๋ฅจ ๋งˆ์šดํŠธ
--net=๋„คํŠธ์›Œํฌ_์ด๋ฆ„: ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ -e ํ™˜๊ฒฝ๋ณ€์ˆ˜_์ด๋ฆ„=๊ฐ’: ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
-d(detach): ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
-i(interactive) : ์ปจํ…Œ์ด๋„ˆ์— ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ
-t(tty): ํŠน์ˆ˜ ํ‚ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก

๋„คํŠธ์›Œํฌ(network)

์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•ด์ค˜์•ผ ํ•จ

๋ช…๋ น์–ด

์ฐธ๊ณ 

docker network ํ•˜์œ„_์ปค๋งจ๋“œ [์˜ต์…˜]  

create ๋„คํŠธ์›Œํฌ_์ด๋ฆ„: ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
inspect ๋„คํŠธ์›Œํฌ_์ด๋ฆ„: ๋„คํŠธ์›Œํฌ ์ƒ์„ธ ์ •๋ณด ํ™•์ธ
connect ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„: ๋„คํŠธ์›Œํฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐ  
disconnect ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„: ๋„คํŠธ์›Œํฌ์™€ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ ๋Š์Œ
ls, prune, rm

โ€ป docker run ์‹œ ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•(MySQL ์˜ˆ์‹œ)

docker run --name ์ปจํ…Œ์ด๋„ˆ_์ด๋ฆ„ -dit --net=๋„คํŠธ์›Œํฌ_์ด๋ฆ„ -e MYSQL_ROOT_PASSWORD=MySQL_๋ฃจํŠธ_ํŒจ์Šค์›Œ๋“œ -e MYSQL_DATABASE=๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค_์ด๋ฆ„ -e MYSQL_USER=MySQL_์‚ฌ์šฉ์ž์ด๋ฆ„ -e MYSQL_PASSWORD=MySQL_ํŒจ์Šค์›Œ๋“œ mysql

๋ณผ๋ฅจ(volume)

์Šคํ† ๋ฆฌ์ง€์˜ ํ•œ ์˜์—ญ์„ ๋ถ„ํ• ํ•œ ๊ฒƒ
์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์‚ฌ๋ผ์ง, ์˜์†์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

๋ณผ๋ฅจ ๋งˆ์šดํŠธ vs ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ

  • ๋ณผ๋ฅจ ๋งˆ์šดํŠธ: ๋„์ปค ์—”์ง„ ์œ„์— ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐ
    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒฝ์œ ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋ณผ๋ฅจ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Œ
docker run ~~~ -v ๋ณผ๋ฅจ_์ด๋ฆ„:์ปจํ…Œ์ด๋„ˆ_๋งˆ์šดํŠธ_๊ฒฝ๋กœ
  • ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ: ํ˜ธ์ŠคํŠธ OS์— ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐ
    ์ปจํ…Œ์ด๋„ˆ ๋ฐ–์—์„œ๋„ ์ง์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ
docker run ~~~ -v ์Šคํ† ๋ฆฌ์ง€_์‹ค์ œ_๊ฒฝ๋กœ:์ปจํ…Œ์ด๋„ˆ_๋งˆ์šดํŠธ_๊ฒฝ๋กœ

๋ช…๋ น์–ด

docker volume ํ•˜์œ„_๋ช…๋ น์–ด [์˜ต์…˜]

create, inspect, ls, prune, rm

โ€ป ๋ณผ๋ฅจ ๋ฐฑ์—… ๋ฐฉ๋ฒ•

docker run --rm -v ๋ณผ๋ฅจ๋ช…:/source -v ๋ฐฑ์—…_์ €์žฅ_ํด๋”๋ช…:/target busybox(๋ฆฌ๋ˆ…์Šค os ์ด๋ฏธ์ง€) tar cvzf /sake/๋ฐฑ์—…ํŒŒ์ผ์ด๋ฆ„.tar.gz -C /source

๋„์ปค ์ปดํฌ์ฆˆ(compose)

์‹œ์Šคํ…œ ๊ตฌ์ถ•๊ณผ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด, ํ•œ๋ฒˆ์— ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ข…๋ฃŒ์™€ ํ๊ธฐ๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ
๋„คํŠธ์›Œํฌ์™€ ๋ณผ๋ฅจ๊นŒ์ง€ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

์„ค์น˜

ํŒŒ์ด์ฌ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ด์ฌ ๋Ÿฐํƒ€์ž„์ด ํ•„์š”

apt install -y python3 python3-pip
pip install docker-compose

์‚ฌ์šฉ

์›ํ•˜๋Š” ํด๋”์— docker-compose.yml ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ(ํด๋” ๋‹น ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅ)

docker-compose -f compose_ํŒŒ์ผ๊ฒฝ๋กœ up ์˜ต์…˜ : ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
docker-compose -f compose_ํŒŒ์ผ๊ฒฝ๋กœ down ์˜ต์…˜ : ์ข…๋ฃŒ ๋ฐ ์‚ญ์ œ
stop, start, ps ๋“ฑ๋“ฑ

@ docker-compose.yml

version: ๋ฒ„์ „
services: ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ จ ์ •๋ณด
networks: ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์ •๋ณด
volumnes: ๋ณผ๋ฅจ ๊ด€๋ จ ์ •๋ณด

์˜ˆ์‹œ

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "8000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ(์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ํ†ต๊ด„ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌ)
์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์— ๊ฑธ์ณ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
YAML ํŒŒ์ผ์— ์ •์˜ํ•œ ๋ฐ”๋žŒ์งํ•œ ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์œ ์ง€ํ•˜๋„๋ก ๊ด€๋ฆฌ
์ง์ ‘์ ์œผ๋กœ ๋„์ปค ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ
ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ(๋งˆ์Šคํ„ฐ ๋…ธ๋“œ - ์›Œ์ปค ๋…ธ๋“œ)
image ์ถœ์ฒ˜: https://arisu1000.tistory.com/27827 etcd: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์šฉ์–ด

  • pod: ์ปจํ…Œ์ด๋„ˆ์™€ ๋ณผ๋ฅจ์„ ํ•จ๊ป˜ ๋ฌถ์€ ๊ฒƒ(์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ์ˆ˜ ์žˆ์Œ)
  • service: ์—ฌ๋Ÿฌ ๊ฐœ์˜ pod(๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ๊ฐ–๋Š”)์—๊ฒŒ ์š”์ฒญ์„ ๋ฐฐ๋ถ„, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์—ญํ• 
    ์ž๋™์ ์œผ๋กœ ๊ณ ์ •๋œ IP ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌ ๋ฐ›์Œ(๊ฐ ํŒŒ๋“œ์—๋Š” ๋‚ด๋ถ€ IP ๋ถ€์—ฌ)
  • ReplicaSet: pod์˜ ์ˆ˜๋ฅผ ๊ด€๋ฆฌ
  • Replica: ReplicaSet๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋™์ผํ•œ ๊ตฌ์„ฑ์˜ pod
  • Deloyment: pod์˜ ๋ฐฐํฌ(์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ)๋ฅผ ๊ด€๋ฆฌ, yaml ํŒŒ์ผ ์„ค์ •์„ ์ด์šฉํ•˜์—ฌ ๊ด€๋ฆฌ ์ž๋™ํ™”
    image

Manifest file

yaml, jsonํ˜•์‹์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์„ค์ • ํŒŒ์ผ
๋ณดํ†ต ๋ฆฌ์†Œ์Šค ๋‹จ์œ„๋กœ ์ž‘์„ฑํ•˜์ง€๋งŒ ํ•œ ํŒŒ์ผ์— ---๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž‘์„ฑ๋„ ๊ฐ€๋Šฅ

apiVersion:    API ๊ทธ๋ฃน ๋ฐ ๋ฒ„์ „
kind:          ๋ฆฌ์†Œ์Šค ์œ ํ˜•(pod, service ๋“ฑ)
metadata:      ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์ด๋ฆ„, ๋ ˆ์ด๋ธ”, ์ƒ์„ฑ ์‹œ๊ฐ„ ๋“ฑ)
spec:          ๋ฆฌ์†Œ์Šค ๋‚ด์šฉ(์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ, ๋ ˆํ”Œ๋ฆฌ์นด ๊ตฌ์„ฑ ๋“ฑ)

๋ช…๋ น์–ด

kubectl ์ปค๋งจ๋“œ ์˜ต์…˜

apply -f yml_ํŒŒ์ผ๊ฒฝ๋กœ: ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜
get ๋ฆฌ์†Œ์Šค_์ด๋ฆ„: ๋ฆฌ์†Œ์Šค ์ƒํƒœ ์ถœ๋ ฅ
create, delete, scale, logs ๋“ฑ