run - Start a Container


  • docker run nginxย 
    • ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•จ
    • Docker ํ˜ธ์ŠคํŠธ์— Nginx ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•จ
    • ํ˜ธ์ŠคํŠธ์— ์ด๋ฏธ์ง€๊ฐ€ ์—†๋‹ค๋ฉด Docker Hub ๋กœ ์ด๋™ํ•ด ์ด๋ฏธ์ง€๋ฅผ Pull ํ•ด์˜ด
    • ์ด ์ž‘์—…์€ ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์žฌ์‚ฌ์šฉํ•จ
  • docker run ubuntu
    • ubuntu ์ด๋ฏธ์ง€์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒํ•จ
    • ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™•์ธํ•ด๋„ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—†์Œ
    • ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ ์ข…๋ฃŒ๋œ ์ƒํƒœ
      • ์™œ? Docker ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชฉ์ ์€ ์šด์˜ ์ฒด์ œ ํ˜ธ๊ทธํŒ…์ด ์•„๋‹ˆ๋ผ ํŠน์ • ์ž‘์—…์ด๋‚˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ
      • ๊ฐ€๋ น Web Server ๋‚˜ Application Server ๋˜๋Š” Database Instance ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ฑฐ๋‚˜ ์—ฐ์‚ฐ์ด๋‚˜ ๋ถ„์„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Œ
      • ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ข…๋ฃŒ๋จ
      • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ๋งŒ ์กด์žฌ
      • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ Web Service ๊ฐ€ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋จ
      • ubuntu ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฆ‰์‹œ ์ข…๋ฃŒ๋˜๋Š” ์ด์œ 
      • ubuntu ๋Š” ๋‹ค๋ฅธ Application ์˜ ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉ๋˜๋Š” ์šด์˜ ์ฒด์ œ์˜ ์ด๋ฏธ์ง€์ผ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ
      • ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—†์Œ

ps - List Containers


  • docker ps
    • ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์™€ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•จ
    • ์ปจํ…Œ์ด๋„ˆ ID ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„, ํ˜„์žฌ ์ƒํƒœ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋“ฑ์ด ์žˆ์Œ
    • ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” Docker ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ์ž„์˜์˜ ID๋‚˜ ์ด๋ฆ„์„ ๊ฐ–์Œ
  • docker ps -a
    • ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ํ™•์ธ
    • ์ด๋ฏธ ์ข…๋ฃŒํ•œ ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ๋ชจ๋‘ ์ถœ๋ ฅ

stop - Stop a Container


  • docker stop nginx
    • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฉˆ์ถค
    • ์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„์ด ํ•„์š”

rm - Remove a Container


  • docker rm nginx
    • ์ข…๋ฃŒํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ

images - List Images


  • docker images
    • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€์˜ ๋ชฉ๋ก๊ณผ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธ

rmi - Remove Images


  • docker rmi nginx
    • ๋ช…๋ น์–ด๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€๊ฐ€ ์ข…์†๋œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘๋‹จ ๋˜๋Š” ์‚ญ์ œํ•ด์•ผ ํ•จ

pull - Download an Image


  • docker pull ubuntu
    • ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์—†์ด ์ด๋ฏธ์ง€๋งŒ pull

Append a command


  • ubuntu ์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์—†๋Š” ์ด๋ฏธ์ง€๋ผ๋ฉดย docker runย ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด Docker ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋ช…๋ นํ•  ์ˆ˜ ์žˆ์Œ
  • docker run ubuntu sleep 5ย ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋œ ํ›„ 5์ดˆ ๊ฐ„ sleep ์ด ์‹คํ–‰๋œ ๋’ค ์ปจํ…Œ์ด๋„ˆ๋Š” ์ข…๋ฃŒ๋จ

exec - Execute a Command


  • ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ
  • ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์˜ ํŒŒ์ผ ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ๊ฐ€์ • ์‹œ
  • docker exec distracted_mcclintock cat /etc/hosts
    • /etc/hosts ์œ„์น˜์— ์žˆ๋Š” ํŒŒ์ผ ์ปจํ…์ธ ๋ฅผ ์ถœ๋ ฅ

run - Attach and Detach


  • docker run kodekloud/simple-webapp
    • ์œ„ ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ forground ์ฆ‰, ์—ฐ๊ฒฐ ๋ชจ๋“œ๋กœ ์‹คํ–‰๋จ
    • ์ฆ‰, ์ฝ˜์†”์— ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ Docker Container ์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์ด๋ผ๋Š” ๋œป
    • ์›น ์„œ๋น„์Šค์˜ ์ถœ๋ ฅ๊ฐ’์„ ํ™•์ธํ•˜๊ฒŒ๋จ
    • ์ด Docker Container ์˜ ์ถœ๋ ฅ๊ฐ’์„ ๋ณด๋Š” ๊ฒƒ ์™ธ์—” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ์—†์Œ
  • docker run -d kodekloud/simple-webapp
    • Docker Container ๋ฅผ Detached ๋ชจ๋“œ๋กœ ์‹คํ–‰
    • Docker Container ๋ฅผ background ์—์„œ ์‹คํ–‰
    • docker attach ์— ์ปจํ…Œ์ด๋„ˆ ID ๋‚˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์„œ ๋‹ค์‹œ Attached ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝ

docker run


run - tag

  • docker run redis
    • tag ๊ฐ€ ๋ช…์‹œ๋˜์ง€ ์•Š์œผ๋ฉด latest ๋ฒ„์ „์œผ๋กœ ์‹คํ–‰
  • docker run redis:4.0

run - stdin

  • Docker Container ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‘œ์ค€ ์ž…๋ ฅ์„ ์ˆ˜์‹ ํ•˜์ง€ ์•Š์Œ
  • ์ž…๋ ฅ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ„ฐ๋ฏธ๋„์ด ์—†์–ด ๋น„ ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๋กœ ์‹คํ–‰๋จ
  • ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์œผ๋ ค๋ฉด -i ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ˜ธ์ŠคํŠธ์˜ ํ‘œ์ค€ ์ž…๋ ฅ๊ฐ’๊ณผ Docker Container ๋ฅผ ๋งคํ•‘ํ•ด์•ผ ํ•จ
    • docker run -i kodekloud/simple-prompt-docker
      • ์ด๋Ÿฌ๋ฉด ํ„ฐ๋ฏธ๋„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ํ„ฐ๋ฏธ๋„์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— stdin ์ถœ๋ ฅ๊ฐ’์ด ๋ณด์ด์ง€ ์•Š์Œ
    • docker run -it kodekloud/simple-prompt-docker
      • Terminal ์„ ๋œปํ•˜๋Š” t ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ stdin ์ถœ๋ ฅ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ์Œ

run - PORT mapping

  • Docker Host / Docker Engine = Docker ๊ฐ€ ์„ค์น˜๋œ ๊ธฐ๋ณธ ํ˜ธ์ŠคํŠธ
  • Container ๋กœ ์‹คํ–‰๋˜๋Š” Web App ์— ์—‘์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์€?
    • ๋ชจ๋“  Docker Container ๋Š” ๊ธฐ๋ณธ์œผ๋กœ ๋‚ด๋ถ€ IP ๋ฅผ ํ• ๋‹น ๋ฐ›์Œ
      • ์ด๋Š” Docker Host ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์™ธ๋ถ€ ์ ‘๊ทผ์˜ ๊ฒฝ์šฐ Docker Container Port ์™€ Docker Host Port ๋ฅผ ๋งคํ•‘ํ•˜๋Š” Port Mapping ์„ ํ™œ์šฉํ•ด์•ผ ํ•จ
      • docker run -p 80:5000 kodekloud/simple-webapp
      • ์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Docker Host ์˜ 80 ํฌํŠธ์™€ Docker Container ์˜ 5000 ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฌผ๋ก  ํ•˜๋‚˜์˜ Docker Host Port ์— 2๊ฐœ ์ด์ƒ์˜ Container ๋ฅผ ๋งคํ•‘ํ•  ์ˆœ ์—†์Œ

run - Volume mapping

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜๋ฉด Docker Container ์•ˆ์— ์žˆ๋Š” ์ž์ฒด์ ์œผ๋กœ ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅ๋จ
  • docker stop mysql
  • docker rm mysql
    • Container ์ œ๊ฑฐ ์‹œ ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด Docker Host ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ Docker Container ๋‚ด๋ถ€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋งคํ•‘ํ•ด์•ผ ํ•จ
  • docker run -v /opt/datadir:/var/lib/mysql mysql
  • ์œ„ ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ Docker Container ๋‚ด์˜ ํด๋”๋กœ ์™ธ๋ถ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋งˆ์šดํŠธ ๋จ

Inspect Container

  • docker ps ๋ช…๋ น์–ด ์‚ฌ์šฉ ์‹œ Container ์ด๋ฆ„์ด๋‚˜ ID ๊ฐ™์€ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
  • docker inspect ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์˜ ์ถ”๊ฐ€์ ์ธ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ
    • docker inspect blissful_hopper ์‚ฌ์šฉ ์‹œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ชจ๋“  ์„ธ๋ถ€ ์ •๋ณด๋ฅผ JSON ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ
      • ์ƒํƒœ, ๋งˆ์šดํŠธ, ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ, ๋„คํŠธ์›Œํฌ ์„ค์ • ๋“ฑ
    • Networks.bridge.IPAddress ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ IP ํ™•์ธ ๊ฐ€๋Šฅ

Container Logs

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•
    • ์˜ˆ๋ฅผ ๋“ค์–ด detatched ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ ์ปจํ…Œ์ด๋„ˆ์˜ stdout ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ
    • docker logs blissful_hopper (์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ด๋ฆ„)

References