ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿงธ ์‚ฌ๋‚ด์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋„์ปค ์Šคํ„ฐ๋””๋ฅผ ์‹ค์Šต ๋ฐ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.

TAG

latest : ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ

์•ˆ์ „์„ ์œ„ํ•ด์„œ ๋ฒ„์ „์„ TAG์— ๋‹ฌ์•„์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค.

IMAGE ID

ํ•ด๋‹น ๋„์ปค ์ด๋ฏธ์ง€์˜ ๊ณ ์œ ํ•œ ์•„์ด๋””

IMAGE ID๊ฐ€ ๋™์ผํ•œ๋ฐ TAG๋‚˜ NAME์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ⇒ ๋ณ„์นญ

ํ™˜๊ฒฝ์„ค์ •

Docker Compose V2 ⇒ ์ด๋ฒˆ ์Šคํ„ฐ๋””๋Š” ์•ˆ ๋‹ค๋ฃฌ๋‹ค.

Resource

๋„์ปค์— ์–ผ๋งˆ๋‚˜ ํ• ๋‹นํ•ด์ค„์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Docker Engine

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๋„์ปค ๋ฐ์Šคํฌํƒ‘์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ⇒ UI๋กœ ์ œ๊ณต ⇒ ์ด๋ฒˆ ์Šคํ„ฐ๋””์—๋Š” ์•ˆ ๋‹ค๋ฃฌ๋‹ค.

DockerHub

docker run hello-world

๋„์ปค๊ฐ€ ๊น”๋ฆฐ์ง€ ์•„๋‹Œ์ง€ ์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค”
run์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์„๊นŒ?

 

๋„์ปค๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์ฐพ๋Š” ์ˆœ์„œ : ๋กœ์ปฌ > docker hub > ๋ณ„๋„์˜ ๊ฐœ์ธ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ(ECR๋“ฑ)

๐Ÿค”
์ด๋ฏธ์ง€ ์ด๋ฆ„ ์˜คํƒ€๋กœ ์ธํ•ด ์ž˜๋ชป๋œ ๋„์ปค image๋ฅผ runํ–ˆ์„ ๋•Œ ์•…์„ฑ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์ง€ ์•Š์„๊นŒ?

 

๋„์ปคํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ๋ฐ”์ด๋Ÿฌ์Šค ๊ฒ€์‚ฌ๋ฅผ ํ•ด์„œ ์•…์„ฑ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด ๋ฐ›์„ ์œ„ํ—˜์€ ๊ฑฑ์ •์•ˆํ•ด๋„ ๋œ๋‹ค.

// ๋„์ปค ์ข…๋ฅ˜๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ
docker images

hello-world์˜ IMAGE ID๋ฅผ ์‚ญ์ œํ•ด๋ณด์ž.

// ํ•˜๋‚˜๋งŒ ์ง€์šธ ๋•Œ
docker rmi fe~

๐Ÿค”
์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋ฐ ์™œ ์‚ญ์ œ๊ฐ€ ์•ˆ๋˜์ง€?

 

๋„์ปค๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ์ด๊ฑฐ ๋‚˜์ค‘์— ์“ธ๊ฑฐ์•ผ๋ผ๊ณ  ์ธ์‹ํ•ด์„œ ์‚ญ์ œ๋ฅผ ์•ˆํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

CONTAINER ID๋กœ ์ฃฝ์—ฌ์ค˜์•ผ ํ•œ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ ID๋ฅผ ์•Œ์•„๋ณด์ž.

docker ps -a

์ปจํ…Œ์ด๋„ˆ ID๋กœ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

docker rm {{์ปจํ…Œ์ด๋„ˆ ID}}

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์šด ๋’ค rmi ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•˜์ž.

ํƒœ๊ทธ f๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ๊ฑฐ ํ•„์š”์—†์ด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

docker rmi -f {{์ปจํ…Œ์ด๋„ˆ ID}}

์›๋ž˜๋Š” IMAGE๋ฅผ ์Šคํƒ‘ ํ›„ ์ง€์›Œ์ค˜์•ผ ํ•จ.

์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์›Œ๋ณด์ž

์ด๋ฏธ์ง€๋ฅผ ๊ตฝ๋Š”๋‹ค๋Š” ๊ฑด build๋ฅผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

nodejs version 10.24.1์„ buildํ•ด๋ณด์ž.

docker build nodejs -t nodejs:10.24.1

๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ runํ•ด๋ณด๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋‚˜์˜จ๋‹ค.

runํ•˜๊ณ  ๋ฐ”๋กœ ์ฃฝ์–ด๋ฒ„๋ฆฐ๋‹ค.

docker run -v ${PWD}:/var/app/:rw -p 8000:8000 -w /var/app -env-file=${PWD}/docker/env/development.env -ti --name admin nodejs:10.24.1 yarn install && yarn start:admin

๊ณ„์† ๋Œ์•„๊ฐ€๋Š” ํ„ฐ๋ฏธ๋„์€ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๋ชป ์‚ฌ์šฉํ•˜๋Š” ํ„ฐ๋ฏธ๋„์ด ๋œ๋‹ค.

background๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

-d๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฏธ์ง€(nodejs:10.24.1) ์•ž์ชฝ์œผ๋กœ ๋Œ๋ ค์•ผ ํ•œ๋‹ค.

docker run -v ${PWD}:/var/app/:rw -p 8000:8000 -w /var/app -env-file=${PWD}/docker/env/development.env -ti --name admin -d nodejs:10.24.1 yarn install && yarn start:admin
  • -v ${PWD}:/var/app/:rw
    • ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ${PWD} : ๋ฆฌ๋ˆ…์Šค์—์„œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • :rw : read + write [default]
    • :ro : read only
    • ๊ฒฐ๊ตญ ์ด๋ฏธ์ง€๋ฅผ runํ•  ๋•Œ write๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— rw๋ฅผ ๋งŽ์ด ์“ด๋‹ค๊ณ  ํ•œ๋‹ค.
  • -p 8000:8000 : ํฌํŠธ ์˜คํ”ˆ. ํ˜ธ์ŠคํŠธ์—์„œ 8000๋ฒˆ์œผ๋กœ ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ๋„์ปค ๋‚ด๋ถ€์˜ 8000์œผ๋กœ ์—ฐ๊ฒฐ
  • -w /var/app : working dir. ๋„์ปค๊ฐ€ ์ฒ˜์Œ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ ‘๊ทผํ•  ์ตœ์ดˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ
  • -env-file=${PWD}/docker/env/development.env : ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ
  • -ti
    • -t : ํ„ฐ๋ฏธ๋„ ์˜คํ”ˆ
    • -i : interactiveํ•˜๊ฒŒ ์ž…๋ ฅ์„ ๋ฐ›๊ฒ ๋‹ค.
  • —name admin : ์ปจํ…Œ์ด๋„ˆ๋ช…
  • nodejs:10.24.1 : ์ด๋ฏธ์ง€๋ช…
  • yarn install && yarn start:admin : -t๋ฅผ ํ†ตํ•ด ์—ด๋ฆฐ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅ๋  ๋ช…๋ น์–ด. (entrypoint)

log ์ฐ๊ธฐ

docker logs {{์ด๋ฆ„(admin)}}

๋กœ๊ทธ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋ ค๋ฉด -tf

docker logs {{์ด๋ฆ„(admin)}} --tail=100 -tf

t : ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํƒœ๊ทธ

๋กœ๊ทธ ๋ถ„์„์„ ์œ„ํ•ด ํŒŒ์ผ๋กœ ์ €์žฅ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

⇒ ๊ฒฐ์ œ ๋น ์ง€๋Š” ๊ฑธ ์ฐพ์•„๋‚ผ ๋•Œ ํŒŒ์ผ๋กœ ๋นผ๋‚ด์„œ ๋ถ„์„ํ–ˆ๋‹ค.

docker logs {{์ปจํ…Œ์ด๋„ˆ ID}} -t >& {{ํŒŒ์ผ๋ช…}}

๋„์ปค ๋ฉˆ์ถ”๊ธฐ

docker stop {{์ด๋ฆ„(admin)}}

stop์—†์ด rm ๋ช…๋ น์–ด๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์•ˆ ์ง€์›Œ์ง„๋‹ค.

docker rm -f(๊ฐ•์ œ์ง€์šฐ๊ธฐ)ํ•ด์•ผ stop + rm์˜ ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๋„์ปค ์žฌ์‹œ์ž‘ํ•˜๊ธฐ

docker restart {{์ด๋ฆ„(admin)}}