๐Ÿณ Docker

JeongHoHyunยท2025๋…„ 4์›” 3์ผ
0

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
1/9
post-thumbnail

๐Ÿณ Docker?

  • Docker๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์‹คํ–‰ํ™˜๊ฒฝ์„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ๋ฐฐํฌํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ด๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

โœ… ๊ฐœ๋ฐœํ™˜๊ฒฝ ํ†ต์ผ (์ด์‹์„ฑ)

  • ์–ด๋””์„œ๋“  ๋™์ผํ•œ ์‹คํ–‰ํ™˜๊ฒฝ ๋ณด์žฅ

โœ… ๋น ๋ฅธ ๋ฐฐํฌ / ๋กค๋ฐฑ

  • ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•ด๋‘๋ฉด ํ•„์š”ํ•  ๋•Œ ๋ฐ”๋กœ ์‹คํ–‰
  • ์ด์ „ ๋ฒ„์ „์œผ๋กœ๋„ ๋น ๋ฅด๊ฒŒ ๋ณต์› ๊ฐ€๋Šฅ

โœ… ๊ฒฝ๋Ÿ‰ํ™”

  • ๊ธฐ์กด VM(๊ฐ€์ƒ ๋จธ์‹ )๋ณด๋‹ค ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„
  • OS ์ „์ฒด๋ฅผ ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ปค๋„ ๊ณต์œ 

โœ… MSA(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜)์— ์ ํ•ฉ

  • ๊ฐ ์„œ๋น„์Šค๋งˆ๋‹ค ๋…๋ฆฝ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

ํ•ต์‹ฌ ๊ฐœ๋…

์ด๋ฏธ์ง€

  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ(์ฝ”๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ™˜๊ฒฝ ์„ค์ • ๋“ฑ ํฌํ•จ)

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

  • ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ์‹ค์ œ ์ธ์Šคํ„ด์Šค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋Œ์•„๊ฐ€๋Š” ๋‹จ์œ„

Dockerfile

  • ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค์ • ํŒŒ์ผ(์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋นŒ๋“œํ• ์ง€ ๋“ฑ)

DockerHub

  • ๊ณต๊ฐœ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ. GitHub์ฒ˜๋Ÿผ Docker ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

Volumn

  • ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ณต์œ /๋ณด์กด์„ ์œ„ํ•œ ๊ธฐ๋Šฅ

Port Mapping

  • ์™ธ๋ถ€์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ ‘๊ทผ ์‹œ ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ

Docker ์„ค์น˜

Window

Mac

Docker ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์˜ˆ์ œ

  • docker pull nginx : ๋„์ปค์— nginx ๋‹ค์šด๋กœ๋“œ (๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „ : lastest)
  • docker image ls : ๋„์ปค์— ์žˆ๋Š” image์กฐํšŒ
  • docker run --name webserver -d -p 80:80 nginx : ๋‹ค์šด๋ฐ›์€ nginx๋ฅผ webserver๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‹คํ–‰
  • docker ps : ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ํ™•์ธ
  • docker stop webserver : name์ด webserver์ธ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
  • docker image rm (-f) [์ด๋ฏธ์ง€ ID ๋˜๋Š” ์ด๋ฏธ์ง€๋ช…] : ๋„์ปค ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋งจ๋’ค๋Š” IMAGE ID ์ด๋‹ค. (์ „์ฒด๊ฐ€ ์•„๋‹Œ ์ผ๋ถ€๋งŒ ์ณ๋„ ์‚ญ์ œ๊ฐ€ ๋œ๋‹ค), -f๋ฅผ ๋„ฃ์œผ๋ฉด ์ค‘๋‹จ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ๊ฐ•์ œ ์‚ญ์ œ๋ฅผ ํ•œ๋‹ค.

์ „์ฒด ์ด๋ฏธ์ง€ ์‚ญ์ œ

  • โญ๏ธ docker image rm $(docker images -q) : ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋งŒ ์ „์ฒด ์‚ญ์ œ
  • โญ๏ธ docker image rm -f $(docker images -q) : ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•ด์„œ ์ด๋ฏธ์ง€ ์ „์ฒด ์‚ญ์ œ

โญ๏ธ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ + ์‹คํ–‰

  • docker run ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…] : ๋„์ปค ์ƒ์„ฑ
  • docker start [์ปจํ…Œ์ด๋„ˆ ID] : ํ•ด๋‹น์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜๊ธฐ
# docker run ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…]
docker run nginx #ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ #์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด ์กฐ์ž‘ ๋ถˆ๊ฐ€
docker run -d nginx #๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰

# ์ปจํ…Œ์ด๋„ˆ์— ์ด๋ฆ„ ๋ถ™์—ฌ์„œ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜๊ธฐ
#docer run -d --name [์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„] ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…]
docker run -d --name my-web-server nginx

โญ๏ธ ์ปจํ…Œ์ด๋„ˆ ์ค‘๋‹จ ๋ฐ ์‚ญ์ œ

#์ปจํ…Œ์ด๋„ˆ ์ค‘๋‹จ ํ›„ ์‚ญ์ œํ•˜๊ธฐ
docker ps #์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
docker stop {์‹คํ–‰์‹œํ‚จ ์ปจํ…Œ์ด๋„ˆ ID} #์ปจํ…Œ์ด๋„ˆ ์ค‘๋‹จ
docker rm {์‹คํ–‰์‹œํ‚จ ์ปจํ…Œ์ด๋„ˆ ID} #์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker image rm ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…] #์ด๋ฏธ์ง€ ์‚ญ์ œ
  • docker ps : ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
  • docker stop {์‹คํ–‰์‹œํ‚จ ์ปจํ…Œ์ด๋„ˆ ID} : ์ปจํ…Œ์ด๋„ˆ ์ค‘๋‹จ
  • docker rm {์‹คํ–‰์‹œํ‚จ ์ปจํ…Œ์ด๋„ˆ ID} : ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
  • docker image rm ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…] : ์ด๋ฏธ์ง€ ์‚ญ์ œ

โญ๏ธ ๋„์ปค ์‹คํ–‰ ํฌํŠธํฌ์›Œ๋”ฉ

# docker run -d -p [ํ˜ธ์ŠคํŠธํฌํŠธ]:[์ปจํ…Œ์ด๋„ˆ ํฌํŠธ] ์ด๋ฏธ์ง€๋ช…[:ํƒœ๊ทธ๋ช…]
docker run -d -p 4000:80 nginx
  • docker run -d -p 4000:80 : ๋„์ปค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ˜ธ์ŠคํŠธ์˜ 4000๋ฒˆ ํฌํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ 80ํฌํŠธ๋กœ ์—ฐ๊ฒฐ (localhost:4000 ์œผ๋กœ ์ ‘์† ๊ฐ€๋Šฅ)

โญ๏ธ ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ

docker ps #์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋“ค๋งŒ ์กฐํšŒ
docker ps -a #์‹คํ–‰์ค‘ + ์‹คํ–‰์ค‘์ด ์•„๋‹Œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
  • docker ps : ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ „์ฒด ์กฐํšŒ
  • docker ps -a : ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ (์‹คํ–‰์ค‘์ด ์•„๋‹Œ ์ปจํ…Œ์ด๋„ˆ + ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ)

โญ๏ธ ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

docker rm ์ปจํ…Œ์ด๋„ˆ๋ช… ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ID #์ค‘์ง€๋˜์–ด ์žˆ๋Š” ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker rm -f ์ปจํ…Œ์ด๋„ˆ๋ช… ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ID #์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker rm $(docker ps -qa) #์ค‘์ง€๋˜์–ด์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
docker rm -f $(docker ps qa) #์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
  • docker rm ์ปจํ…Œ์ด๋„ˆ๋ช…[๋˜๋Š” ์ปจํ…Œ์ด๋„ˆID] : ์ค‘์ง€๋˜์–ด ์žˆ๋Š” ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ (์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ค‘์ง€ํ•œ ํ›„์— ๋‚˜ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅ.)
  • docker rm -f ์ปจํ…Œ์ด๋„ˆ๋ช…[๋˜๋Š” ์ปจํ…Œ์ด๋„ˆID] : ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
  • docker rm $(docker ps -qa) : ์ค‘์ง€๋˜์–ด์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
  • docker rm -f $(docker ps -qa) : ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

โญ๏ธ ๋„์ปค ๋กœ๊ทธ ์ถœ๋ ฅ

docker logs [์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ID] #ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชจ๋“  ๋กœ๊ทธ ์กฐํšŒ

#docker logs --tail [๋กœ๊ทธ ๋๋ถ€ํ„ฐ ํ‘œ์‹œํ•  ์ค„ ์ˆ˜] [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…]
docer logs --tail 10 [์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] #์ตœ๊ทผ ๋กœ๊ทธ 10์ค„๋งŒ ์กฐํšŒ

docker logs -f [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] #๊ธฐ์กด ๋กœ๊ทธ + ์ดํ›„ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ

docker logs --tail -0 -f [์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] #์•ž์œผ๋กœ ์ƒ์„ฑ๋  ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ๋งŒ ๋ณด๊ธฐ
  • docker logs [์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆID] : ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชจ๋“  ๋กœ๊ทธ ์กฐํšŒ
  • docker logs --tail 10 [์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] : ์ตœ๊ทผ ๋กœ๊ทธ 10์ค„ ์กฐํšŒ
  • docker logs -f [์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] : ๊ธฐ์กด ๋กœ๊ทธ ์ถœ๋ ฅ ํ›„, ์ดํ›„ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ถœ๋ ฅ
  • docker logs --tail -0 -f [์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…] : ์•ž์œผ๋กœ ์ƒ์„ฑ๋  ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ๋ฐ˜ ๋ณด๊ธฐ(๊ธฐ์กด๋กœ๊ทธX)

โญ๏ธ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์ ‘์†(exec -it)

# docker exec -it ์ปจํ…Œ์ด๋„ˆ๋ช…[๋˜๋Š” ์ปจํ…Œ์ด๋„ˆID] bash

docker run -d nginx
docker exec -it [Nginx๊ฐ€ ์‹คํ–‰๋˜๊ณ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆID] bash
ls #์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ํŒŒ์ผ ์กฐํšŒ
cd /etx/nginx
cat nginx.conf
exit
  • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‚˜์˜ค๋ ค๋จผ Ctrl + D ๋˜๋Š” exit์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค
  • bash : ์‰˜(Shell)์˜ ์ผ์ข…
  • -it : -it์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. -it์˜ต์…˜์„ ์ ์ง€ ์•Š์œผ๋ฉด ๋ช…๋ น์–ด๋ฅผ 1๋ฒˆ๋งŒ ์‹คํ–‰์‹œํ‚ค๊ณ  ์ข…๋ฃŒ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. (-it์˜ต์…˜์„ ์ ์–ด์•ผ ๊ณ„์†ํ•ด์„œ ๋ช…๋ น์–ด ์ž…๋ ฅ๊ฐ€๋Šฅ)
profile
Java Back-End 2022.11.01 ๐Ÿ’ป~ing

0๊ฐœ์˜ ๋Œ“๊ธ€