11 ๋ถ„ ์†Œ์š”

๐Ÿ’ก ์ด ๊ธ€์—์„œ์˜ Docker ์‹ค์Šต ๋ถ€๋ถ„์—์„œ๋Š” Windows 11 ํ™˜๊ฒฝ์—์„œ WSL 2, Ubuntu, Docker Desktop์„ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ์ปดํ“จํ„ฐ ๋“ฑ์˜ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด ๊ธ€์˜ ์‹ค์Šต ๋ถ€๋ถ„๋Œ€๋กœ ์ž˜ ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ์„ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ Docker์˜ container๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•ด๋ด„์œผ๋กœ์จ, Docker image ๋ฐ container์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ด๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐ๊ฐ์˜ ๋ช…๋ น์–ด ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ฆ‰, Docker์˜ ๊ธฐ์ดˆ ๋ถ€๋ถ„์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” image, container ์‹คํ–‰, ์ค‘๋‹จ, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋จผ์ € Docker ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์‚ฌ์‹ค๊ณผ ๋”๋ถˆ์–ด, Docker registry์—์„œ image๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ํฌ๊ด„์ ์œผ๋กœ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค.

์ด ๊ธ€์—์„œ ์‹ค์Šต ๋ถ€๋ถ„์€ WSL 2, Docker Desktop์„ ์ด์šฉํ•œ๋‹ค. Docker Desktop์€ ๋ถ„๋ช… GUI๋ผ์„œ ์ด์šฉํ•˜๊ธฐ ํŽธํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” CLI ๋ฐฉ์‹์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ์œ„์ฃผ๋กœ ์‚ดํŽด๋ณด๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค. ์›น ๋ฐฐํฌ ๋“ฑ ์„œ๋ฒ„ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํŒ… ์ž์›์„ ์กฐ๊ธˆ์ด๋ผ๋„ ์•„๊ปด์„œ ํ™œ์šฉํ•ด์•ผํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” GUI๋„ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์— ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์–ด ๋ณดํ†ต CLI ํ˜•ํƒœ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ๋“ค์„ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด GUI๋ณด๋‹จ CLI ์œ„์ฃผ๋กœ ์‚ดํŽด๋ณด๊ณ ์ž ํ•œ๋‹ค.

WSL 2 ํ™˜๊ฒฝ์—์„œ Docker ์‹คํ–‰ํ•ด๋ณด๊ธฐ

์‚ฌ์‹ค โ€œ[OS][Docker] WSL 2 - Windows์—์„œ์˜ Linux, Docker ์„ค์น˜ ๋ฐ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•โ€์ด๋ผ๋Š” ์ด์ „ ๊ธ€์—์„œ WSL2, Docker Desktop ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋‹ค๋ฃจ๊ธด ํ–ˆ์ง€๋งŒ, ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์„ค์น˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„  ํ•ด๋‹น ๊ธ€์— ๋‹ค๋ค˜์œผ๋‹ˆ ์—ฌ๊ธฐ์„œ๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ„๋‹จํžˆ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.

  1. ์ •์„์ ์ธ ๋ฐฉ๋ฒ•
    1. ์šฐ์„  Windows ๋ฐ”ํƒ•ํ™”๋ฉด ์•„๋ž˜์˜ ์ž‘์—… ํ‘œ์‹œ์ค„์— ์žˆ๋Š” ๊ฒ€์ƒ‰์ฐฝ์— โ€œpowershellโ€์ด๋ผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด โ€œWindows PowerShellโ€์ด ๋œฌ๋‹ค. โ€œRun as Administratorโ€๋ฅผ ํด๋ฆญํ•˜์—ฌ ๊ด€๋ฆฌ์ž๋กœ ์‹คํ–‰ํ•œ๋‹ค.

      image

      ์‚ฌ์ง„ 1-1.

    2. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ„ฐ๋ฏธ๋„ ์ฐฝ์ด ๋œฐ ๊ฒƒ์ด๋‹ค. wsl ์ด๋ผ๊ณ  ์น˜๋ฉด ์ด๋ฏธ ์„ค์น˜๋œ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์ด ์‹คํ–‰๋˜์–ด ํ•ด๋‹น ํ„ฐ๋ฏธ๋„๋กœ ์ „ํ™˜๋  ๊ฒƒ์ด๋‹ค. ํ•„์ž์˜ ๊ฒฝ์šฐ Ubuntu๋ฅผ ์„ค์น˜ํ–ˆ๊ธฐ์— ํ•ด๋‹น ๋ฐฐํฌํŒ์ด ์‹คํ–‰๋œ๋‹ค.

      ์‚ฌ์ง„ 1-2.

      ์‚ฌ์ง„ 1-2.

    3. Docker Desktop์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ํ‚ค๊ธฐ๋งŒ ํ•ด๋„ Docker engine์€ ์ •์ƒ ์ž‘๋™ํ•  ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ขŒ์ธก ํ•˜๋‹จ์— โ€œEngine runningโ€์ด๋ผ ๋˜์–ด ์žˆ์œผ๋ฉด docker engine์ด ์‹คํ–‰ ์ค‘์ด๋ผ๋Š” ๋œป์ด๋‹ค.

      ์‚ฌ์ง„ 1-3.

      ์‚ฌ์ง„ 1-3.

    4. ๋‹ค์‹œ ํ„ฐ๋ฏธ๋„ ์ฐฝ์œผ๋กœ ๋Œ์•„์™€์„œ, docker version ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด๋ณด์ž. ๋งŒ์•ฝ ๋„์ปค ์—”์ง„์ด ์ •์ƒ ์ž‘๋™ํ•œ๋‹ค๋ฉด Docker client ๋ฐ server ๊ด€๋ จ ์ •๋ณด๋“ค์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด docker ๋ช…๋ น์–ด ์ž์ฒด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋ง์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์˜ ์•„๋žซ ๋ถ€๋ถ„๊ณผ ๊ฐ™์ด docker client ๋ฐ server ์ •๋ณด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค๋ฉด docker๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๋ฅผ ๋งˆ์ณค๋‹ค๋Š” ๋œป์ด๋‹ค. ํ•œ ํŽธ, ์›ํ™œํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋Š” cd ~ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

      image

      ์‚ฌ์ง„ 1-4.

  2. ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
    1. ์‚ฌ์‹ค WSL2์™€ Ubuntu๊นŒ์ง€ ์„ค์น˜ ์™„๋ฃŒํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด Windows ์ž‘์—…ํ‘œ์‹œ์ค„์˜ ๊ฒ€์ƒ‰์ฐฝ์— โ€œUbuntuโ€๋ผ๊ณ ๋งŒ ์ณ๋„ ํ•ด๋‹น ์•ฑ์ด ๋œฌ๋‹ค. ์ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด WSL2์—์„œ Ubuntu๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ์ƒํƒœ์—์„œ ์•„๊นŒ์™€ ๋˜‘๊ฐ™์ด Docker Desktop์„ ํ‚ค๋ฉด ๋ฐ”๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๋ฅผ ๋งˆ์น˜๊ฒŒ ๋œ๋‹ค. ์‰ฌ์šด ์‚ฌ์šฉ์„ ์œ„ํ•ด ์•„๋ž˜ ์‚ฌ์ง„์—์„œ โ€œ์ž‘์—… ํ‘œ์‹œ์ค„์— ๊ณ ์ •โ€์„ ๋ˆ„๋ฅด๋ฉด ์ž‘์—… ํ‘œ์‹œ์ค„์— ํ•ด๋‹น ์•„์ด์ฝ˜์ด ๋“ฑ๋ก๋  ๊ฒƒ์ด๋‹ค. ํ•ด๋‹น ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ธฐ๋งŒ ํ•ด๋„ ๋ฐ”๋กœ WSL 2 ๊ธฐ๋ฐ˜์˜ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ CLI ํ„ฐ๋ฏธ๋„ ์ฐฝ์ด ๋ฐ”๋กœ ๋œฐ ๊ฒƒ์ด๋‹ค.

      ์‚ฌ์ง„ 1-5.

      ์‚ฌ์ง„ 1-5.

Docker์˜ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด์™€ ๊ทธ ๊ตฌ์กฐ

CLI ํ™˜๊ฒฝ์—์„œ Docker์˜ ๋ช…๋ น์–ด ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

docker ์ƒ์œ„_์ปค๋งจ๋“œ ํ•˜์œ„_์ปค๋งจ๋“œ [์˜ต์…˜] ๋Œ€์ƒ [์˜ต์…˜ ์ธ์ž]

์ฝ”๋“œ 1-1. docker ์ปค๋งจ๋“œ ๊ตฌ์กฐ

docker container run -dit some-container --mode 1
        ์ƒ์œ„     ํ•˜์œ„ ์˜ต์…˜     ๋Œ€์ƒ         ์ธ์ž

์ฝ”๋“œ 1-2. docker ๋ช…๋ น์–ด ์˜ˆ์‹œ

  • ์ƒ์œ„ ์ปค๋งจ๋“œ: โ€œ๋ฌด์—‡์„โ€์— ํ•ด๋‹นํ•˜๋Š” ์ปค๋งจ๋“œ. ์ฃผ๋กœ image, container ๋“ฑ Docker์˜ ์š”์†Œ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • ํ•˜์œ„ ์ปค๋งจ๋“œ: ํ–‰๋™์— ํ•ด๋‹นํ•˜๋Š” ์ปค๋งจ๋“œ. run, ls , start ๋“ฑ ์ƒ์œ„ ์ปค๋งจ๋“œ๋กœ ์ง€์ •ํ•œ docker ์š”์†Œ์— ๋Œ€ํ•ด ์–ด๋–ค ํ–‰๋™์„ ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. docker container run ์ด๋ผ๋ฉด container๋ผ๋Š” ๊ฒƒ์„ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค.
  • ์˜ต์…˜: ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•„์š”ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ์„ ๋•Œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋ณด๋ฉด ๋œ๋‹ค. ์œ„ ์ฝ”๋“œ 1-2์—์„œ๋Š” -d , -i , -t ๊ฐ๊ฐ์˜ ์˜ต์…˜๋“ค์„ ํŽธ์˜์ƒ ํ•ฉ์นœ ๊ฒƒ์ด๋‹ค.
  • ๋Œ€์ƒ: ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ๊ฒƒ์— ๋Œ€ํ•ด ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ์ง€ ๊ฒฐ์ •. ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ์ฝ”๋“œ 1-2์ฒ˜๋Ÿผ container ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ, ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค container์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ• ์ง€ ๊ทธ container ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์œ„ ์˜ˆ์—์„œ๋Š” some-container ๋ผ๋Š” ํŠน์ • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์ •ํ•œ ์˜ˆ์‹œ์ด๋‹ค. httpd , MySQL ๋“ฑ ์—ฌ๋Ÿฌ container๋“ค์ด ์žˆ์œผ๋‹ˆ ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ํƒํ•ด ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ธ์ž: ๋ฐ”๋กœ ์•ž์˜ โ€œ๋Œ€์ƒโ€์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•œ ์ธ์ž๊ฐ€ ์žˆ์„ ๋•Œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ. ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL๊ณผ ๊ฐ™์€ DBMS์˜ ๊ฒฝ์šฐ username, password ๋“ฑ์„ ์ธ์ž๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • --mode=1 ๋˜๋Š” --name mycontainer ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ --์˜ต์…˜=๊ฐ’ ๋˜๋Š” --์˜ต์…˜ ๊ฐ’ ์ฒ˜๋Ÿผ ์˜ต์…˜์— ๊ฐ ์ธ์ž๊ฐ’๋“ค์„ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•œ ํŽธ, Docker์˜ image ๋ฐ container์— ๋Œ€ํ•ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด๋“ค๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • docker image ํ•˜์œ„_์ปค๋งจ๋“œ ์˜ต์…˜
ํ•˜์œ„ ์ปค๋งจ๋“œ ์„ค๋ช… ์ถ•์•ฝํ˜•
pull docker registry์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค. ย 
rm docker image ์‚ญ์ œ docker rmi ...
ls ํ˜„์žฌ ๊ธฐ๊ธฐ์—์„œ ๋ณด์œ ํ•œ docker image๋“ค์„ ๋ชฉ๋ก์œผ๋กœ ์ถœ๋ ฅ docker images
build docker image ์ƒ์„ฑ(๋นŒ๋“œ) ย 
  • docker container ํ•˜์œ„_์ปค๋งจ๋“œ ์˜ต์…˜
ํ•˜์œ„ ์ปค๋งจ๋“œ ์„ค๋ช… ์ถ•์•ฝํ˜•
start container ์‹คํ–‰ ย 
stop container ์‹คํ–‰ ์ค‘๋‹จ, ์ •์ง€ docker stop ...
create docker image๋กœ๋ถ€ํ„ฐ container ์ƒ์„ฑ ย 
run docker container๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋งŒ์•ฝ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” image๊ฐ€ ์—†๋‹ค๋ฉด ์ž๋™์œผ๋กœ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ registry๋กœ๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค. docker image pull ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ. ์•„์ง image๋กœ๋ถ€ํ„ฐ container๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค. docker container create ์™€ ๊ฐ™์€ ํšจ๊ณผ. ์ฆ‰, ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“ค ์ด๋ฏธ์ง€ ์ž์ฒด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, docker image pull, docker container create, docker container start ์ด ์„ธ ๋ช…๋ น์–ด๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. docker run ...
rm ์ •์ง€๋œ container๋ฅผ ์‚ญ์ œํ•œ๋‹ค. docker rm ...
exec ์‹คํ–‰ ์ค‘์ธ container ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ย 
ls ํ˜„์žฌ ๋ณด์œ ํ•œ container๋“ค์˜ ๋ชฉ๋ก์„ ์ถœ๋ ฅ. docker ps
cp container, host ๊ฐ„ ํŒŒ์ผ ๋ณต์‚ฌ ๋ช…๋ น์–ด. ย 
commit container๋ฅผ image๋กœ ๋ณ€ํ™˜. ย 
restart ์ค‘๋‹จ๋œ ์ƒํƒœ์˜ container๋ฅผ ์žฌ์‹คํ–‰. ย 

docker ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ธ image, volume ๋“ฑ๊ณผ ๋‹ฌ๋ฆฌ container์˜ ๊ฒฝ์šฐ ํŠน์ดํ•˜๊ฒŒ docker container stop ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด์—์„œ container ๋ฅผ ์ œ์™ธํ•˜๊ณ  docker stop ๊ณผ ๊ฐ™์ด ์ถ•์•ฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค. image๋‚˜ ๊ทธ ์™ธ ์š”์†Œ๋“ค์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๊ณ  container์—์„œ๋งŒ ์ ์šฉ๋˜๋Š” ์˜ˆ์™ธ์ด๋‹ˆ ์ฃผ์˜.

ํ•œ ํŽธ ์ž์ฃผ ์“ฐ์ด๋Š” ์˜ต์…˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กด์žฌํ•œ๋‹ค.

์˜ต์…˜ ์„ค๋ช… ๋น„๊ณ 
--name ์ปจํ…Œ์ด๋„ˆ๋ช… ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์ง€์ • ย 
-p ํ˜ธ์ŠคํŠธ_ํฌํŠธ๋ฒˆํ˜ธ:์ปจํ…Œ์ด๋„ˆ_ํฌํŠธ๋ฒˆํ˜ธ ํ˜ธ์ŠคํŠธ, ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ํฌํŠธ ๋ฒˆํ˜ธ ์ง€์ •. ย 
-v ํ˜ธ์ŠคํŠธ_๋””์Šคํฌ:์ปจํ…Œ์ด๋„ˆ_๋””๋ ‰ํ† ๋ฆฌ ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ ย 
--net=๋„คํŠธ์›Œํฌ๋ช… ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ ย 
-e ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ช…=๊ฐ’ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ย 
-d ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ ์ปจํ…Œ์ด๋„ˆ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ์‹คํ–‰์‹œํ‚ค๋ฉด์„œ ๋™์‹œ์— ๋‹ค๋ฅธ docker ์ž‘์—…์„ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ํ„ฐ๋ฏธ๋„๋กœ ์•„๋ฌด๋Ÿฐ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†์Œ. ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ๋งˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์˜ต์…˜์ด ๋ถˆํ•„์š”ํ•จ.
-i ์ปจํ…Œ์ด๋„ˆ์— ํ„ฐ๋ฏธ๋„์„ ์—ฐ๊ฒฐ. ์ง์ ‘ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜์—ฌ ์ž‘์—…์„ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ. interactive ์˜ ์•ฝ์ž.
-t ํŠน์ˆ˜ ํ‚ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ. ์ด ์˜ต์…˜์„ -i ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ๋ช…๋ น ์ž…์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ shell์„ ํ†ตํ•ด ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋‹ค. ย 
-help ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋ณด๊ณ ์ž ํ•  ๋•Œ. ย 

์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ

์ฒ˜์Œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ๋ฐ›๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์—์„œ์˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ๋ฅธ๋‹ค.

๊ทธ๋ฆผ 2-1. docker container์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ทธ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋“ค.

๊ทธ๋ฆผ 2-1. docker container์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ทธ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋“ค.

  1. ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ docker์—์„œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ๊ด€๋ จ image๊ฐ€ ๋กœ์ปฌ ๊ธฐ๊ธฐ์— ์—†๋Š” ๊ฒฝ์šฐ, DockerHub์™€ ๊ฐ™์€ docker registry๋กœ๋ถ€ํ„ฐ ํ•ด๋‹น image๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.
    1. docker image pull ๋ช…๋ น์–ด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ๋ฐ›์€ image๋กœ๋ถ€ํ„ฐ container๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    1. docker container create ๋ช…๋ น์–ด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  3. ์ƒ์„ฑ๋œ container๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.
    1. docker container start ๋ช…๋ น์–ด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
    2. ์œ„ 3๊ฐ€์ง€ ๋ช…๋ น์–ด๋ฅผ docker container run ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    3. ์„œ๋ฒ„์—์„œ ์›น ๋ฐฐํฌ์™€ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ํ•  ๋•Œ, ๋ฐฐํฌ๋ฅผ ์ค‘๋‹จํ•œ๋‹ค๋“ ๊ฐ€ ๊ทธ ์™ธ ์˜ˆ์™ธ ์ƒํ™ฉ๋“ค์ด ๋ฒŒ์–ด์ง€์ง€ ์•Š๋Š” ํ•œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” container๋Š” ๊ณ„์† ์‹คํ–‰์ค‘์ธ ์ฑ„๋กœ ๋†”๋‘”๋‹ค.
  4. ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ์‹คํ–‰ ์ค‘์ธ container์— ๋Œ€ํ•ด ๋” ์ด์ƒ ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๋‹ค๋“ ์ง€ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ด์œ ๋กœ container๋ฅผ ํ๊ธฐํ•˜๊ณ ์ž ํ•  ๋•Œ ๊ฑฐ์น˜๋Š” ๊ณผ์ •๋“ค์ด๋‹ค. ์‹คํ–‰ ์ค‘์ธ container๋ฅผ ์ค‘๋‹จํ•œ๋‹ค.
    1. docker container stop ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    2. container๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ƒํ™ฉ์—์„œ๋Š” ๋ฐ”๋กœ ํ•ด๋‹น container๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์‹คํ–‰ ์ค‘์ธ container๋ฅผ ๋จผ์ € ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜๋‹ค.
  5. ์‹คํ–‰ ์ค‘๋‹จ๋œ container๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    1. docker container rm ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ๋‹ค.
  6. ๋” ์ด์ƒ image๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด image๋„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
    1. docker image rm ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ๋‹ค.

Docker Desktop๊ณผ ๊ฐ™์€ GUI ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ, ํ˜„์žฌ image, container๋“ค์˜ ๋ชฉ๋ก ๋ฐ ์ƒํƒœ๋“ค์„ ํ•œ ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, CLI์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐ”๋กœ ์•Œ ์ˆ˜๋Š” ์—†๊ธฐ์— ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ์—๋Š” docker ps (docker container ls ์˜ ์ถ•์•ฝํ˜•) ๋ช…๋ น์–ด๋ฅผ, ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ์—๋Š” docker image ls ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ๊ฐ ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€ ๋ชฉ๋ก๊ณผ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ, ์ค‘๋‹จ, ์‚ญ์ œํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

์‹ค์Šตํ•ด๋ณด๊ธฐ

์ด ์ฑ•ํ„ฐ์—์„œ๋Š” ์•ž์„œ ๋งํ•œ ์ปจํ…Œ์ด๋„ˆ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ CLI ํ™˜๊ฒฝ์—์„œ ์‹ค์Šตํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

๋จผ์ € Docker Desktop ๋ฐ ๋ฆฌ๋ˆ…์Šค(ํ•„์ž์˜ ๊ฒฝ์šฐ ์šฐ๋ถ„ํˆฌ) CLI๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฐ ๊ฒƒ์ด๊ธฐ์— ํ•„์š”ํ•œ ์ธ์ž๊ฐ€ ๋œํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ€์ƒ์œผ๋กœ ์‹ค์Šตํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Apache ์›น ์„œ๋ฒ„์ธ httpd ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‹ค์Šตํ•ด๋ณด๊ฒ ๋‹ค.

์ฐธ๊ณ ๋กœ, MySQL ๋“ฑ ์œ ๋ช…ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋“ค์˜ docker image๋“ค์„ ํ™•์ธ, ๊ฒ€์ƒ‰ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค๋ฉด โ€œDockerHubโ€๋ผ๋Š” docker registry์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

์‚ฌ์ง„ 3-1. DockerHub์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€

์‚ฌ์ง„ 3-1. DockerHub์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€

์‚ฌ์ง„ 3-2. DockerHub์—์„œ httpd๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ. ์—ฌ๊ธฐ์„œ httpd์˜ ์‚ฌ์šฉ๋ฒ•, ๋ฒ„์ „, ๊ทธ ์™ธ ์ •๋ณด๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์ง„ 3-2. DockerHub์—์„œ httpd๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ. ์—ฌ๊ธฐ์„œ httpd์˜ ์‚ฌ์šฉ๋ฒ•, ๋ฒ„์ „, ๊ทธ ์™ธ ์ •๋ณด๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € bash ์ฐฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.

$ docker run --name my-apache-1 -d httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
010f7d7e175f: Pull complete
ebd81352b960: Pull complete
4f4fb700ef54: Pull complete
062e450697fa: Pull complete
69b5b831a361: Pull complete
39d55e966aeb: Pull complete
507729664175: Download complete
c72742279dc1: Download complete
Digest: sha256:305fd8326a27a137fedb8900f26375699ab233cc37793f35cf5d7c65671fb252
Status: Downloaded newer image for httpd:latest
cf265bec25a87109acb66d2efce74453bd7e14fa3d8271cefa73f0a4cecfc1da

์ฝ”๋“œ 2-1.

docker run --name my-apache-1 -d httpd ์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์˜€๋‹ค.

  • --name my-apache-1 : ์ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ my-apache-1 ๋กœ ์ง€์ •ํ•œ๋‹ค. ์ด๋ฆ„์€ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ด๊ณ  ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋Š”์ง€์— ๊ด€๋ จ ์žˆ๊ฒŒ ์ง€์œผ๋ฉด ๋˜๊ฒ ๋‹ค.
  • -d : ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋™์ž‘์‹œํ‚จ๋‹ค.
  • httpd : ์•ž์„œ ์–ธ๊ธ‰ํ•œ Apache ์›น ์„œ๋ฒ„์ธ httpd ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ, ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” ๋กœ์ปฌ ๊ธฐ๊ธฐ์— ํ•ด๋‹น image๊ฐ€ ์—†๋‹ค๋ฉด DockerHub์—์„œ ์ž๋™์œผ๋กœ ์ด๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ, ์‹คํ–‰๊นŒ์ง€ ์ž๋™ํ™”ํ•ด์ค€๋‹ค. ์œ„ ์ฝ”๋“œ 2-1์—์„œ๋„ ๋กœ์ปฌ ๊ธฐ๊ธฐ์— ํ•ด๋‹น ์ด๋ฏธ์ง€๊ฐ€ ์—†์–ด ์ด๋ฅผ ๋‹ค์šด๋กœ๋“œ๋ฐ›๋Š” ๊ณผ์ •์ด ๋‚˜ํƒ€๋‚˜ ์žˆ๋‹ค.

docker image ls ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ €์žฅ๋œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ docker image ls
                                                                                                    i Info โ†’   U  In Use
IMAGE          ID             DISK USAGE   CONTENT SIZE   EXTRA
httpd:latest   305fd8326a27        177MB         47.6MB    U

์ฝ”๋“œ 2-2.

๊ทธ๋ฆฌ๊ณ  docker ps ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๋„ ๋ชฉ๋ก์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

$ docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS              PORTS     NAMES
cf265bec25a8   httpd     "httpd-foreground"   About a minute ago   Up About a minute   80/tcp    my-apache-1

์ฝ”๋“œ 2-3.

ํ•ญ๋ชฉ ๋‚ด์šฉ
CONTAINER ID ์ปจํ…Œ์ด๋„ˆ ์‹๋ณ„์ž. ์ปจํ…Œ์ด๋„ˆ ์‹๋ณ„์ž๋Š” ์˜์–ด, ์ˆซ์ž์˜ ๋žœ๋คํ•œ ๊ธ€์ž์ด๋ฏ€๋กœ, ์‚ฌ๋žŒ์˜ ์ž…์žฅ์—์„œ ์‹๋ณ„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ์—๋Š” ์•ž์„œ --name my-apache-1 ์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
IMAGE ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€๋ช…
CREATED ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ํ›„ ๊ฒฝ๊ณผ ์‹œ๊ฐ„
STATUS ์ปจํ…Œ์ด๋„ˆ์˜ ํ˜„์žฌ ์ƒํƒœ๋กœ, ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด Up , ์ข…๋ฃŒ๋œ ์ƒํƒœ๋ผ๋ฉด Exited ๋กœ ํ‘œ์‹œ๋จ.
PORTS ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹น๋œ ํฌํŠธ ๋ฒˆํ˜ธ. ํ˜ธ์ŠคํŠธ -> ์ปจํ…Œ์ด๋„ˆ ํ˜•์‹์œผ๋กœ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉฐ, ๋‘ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ ํ™”์‚ดํ‘œ ๋’ท๋ถ€๋ถ„์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
NAMES ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„. ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ --name ์˜ต์…˜์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ์˜ต์…˜ ๊ฐ’์œผ๋กœ ํ‘œ์‹œ๋  ๊ฒƒ์ด๋‹ค.

docker ps ์˜ ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋งŒ์„ ์ถœ๋ ฅํ•˜๋ฉฐ, docker ps -a ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ง€๋œ ์ƒํƒœ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ๋ณด์—ฌ์ค€๋‹ค.

์œ„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ๋ณด๋“ฏ, docker ps ๋กœ ์ถœ๋ ฅํ•œ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก์—์„œ STATUS ๋ถ€๋ถ„์ด โ€œUpโ€์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค๋ฉด ํ˜„์žฌ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด์ œ ์ปจํ…Œ์ด๋„ˆ์˜ ์“ธ๋ชจ๊ฐ€ ๋‹คํ•ด ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•ด๋ณธ๋‹ค๊ณ  ํ•ด๋ณด๊ฒ ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€, ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฌด์ž‘์ • ์‚ญ์ œ ๋ช…๋ น์–ด๋ฅผ ์ฃผ์ง€ ์•Š๊ณ  ๊ทธ ์ „์— ๋จผ์ € ์ •์ง€์‹œ์ผœ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

$ docker stop my-apache-1
my-apache-1
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                     PORTS     NAMES
cf265bec25a8   httpd     "httpd-foreground"   11 minutes ago   Exited (0) 6 seconds ago             my-apache-1

์ฝ”๋“œ 2-4.

์œ„์™€ ๊ฐ™์ด ์•ž์„œ ์ง€์ •ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์ธ my-apache-1 ์„ ์ด์šฉํ•˜์—ฌ docker stop ... ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘๋‹จ์‹œ์ผฐ๋‹ค. docker stop ... ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ ์ดํ›„ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ช…์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ํ•ด๋‹น ๋ช…๋ น์–ด๊ฐ€ ์ž˜ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋งŒ์„ ์ถœ๋ ฅํ•˜๋Š” docker ps ๊ฒฐ๊ณผ๋ฌผ์— ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์กŒ๊ณ , docker ps -a ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์•˜์„ ๋•Œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ โ€œSTATUSโ€๊ฐ€ โ€œExitedโ€๋กœ ์ค‘๋‹จ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์œผ๋‹ˆ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•ด๋ณด๊ฒ ๋‹ค.

$ docker rm my-apache-1
my-apache-1
$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

์ฝ”๋“œ 2-5.

์•„๊นŒ์ฒ˜๋Ÿผ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ docker rm ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์˜€๋‹ค. ๊ทธ ํ›„ docker ps -a ๋กœ ํ™•์ธํ•ด๋ดค์„ ๋•Œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„์˜ˆ ์‚ญ์ œ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๋“ฏ, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋”ฐ๋ฅธ ์ƒ์„ฑ, ์‹คํ–‰, ์ค‘๋‹จ, ์‚ญ์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ์ˆ˜์‹œ๋กœ docker ps ๋˜๋Š” docker ps -a ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. CLI ํ™˜๊ฒฝ์—์„œ๋Š” ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์ด๋ฏธ์ง€์˜ ์ƒํƒœ๊ฐ€ ์–ด๋–ค์ง€ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•œ ํŽธ GUI ํ™˜๊ฒฝ์ธ Docker Desktop์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฏธ์ง€ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ํ˜„ํ™ฉ์„ ์‰ฝ๊ฒŒ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์ง„ 3-3. Docker Desktop์—์„œ ํ˜„์žฌ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธ.

์‚ฌ์ง„ 3-3. Docker Desktop์—์„œ ํ˜„์žฌ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธ.

์‚ฌ์ง„ 3-4. Docker Desktop์—์„œ ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ๋ฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„์˜ˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ™”๋ฉด์— ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ์ง„ 3-4. Docker Desktop์—์„œ ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ๋ฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„์˜ˆ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ™”๋ฉด์— ์•„๋ฌด๊ฒƒ๋„ ๋œจ์ง€ ์•Š๋Š”๋‹ค.

๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘๋‹จ์‹œํ‚จ ์ƒํƒœ์—์„œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์•„์ง ์‚ญ์ œํ•˜์ง€ ์•Š์•˜์„ ๋•Œ, ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ, docker restart ... ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

$ docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS                     PORTS     NAMES
1823bf8045fa   httpd     "httpd-foreground"   About a minute ago   Exited (0) 2 seconds ago             my-apache-1
$ docker restart my-apache-1
my-apache-1
$ docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS     NAMES
1823bf8045fa   httpd     "httpd-foreground"   2 minutes ago   Up 4 seconds   80/tcp    my-apache-1

์ฝ”๋“œ 2-6.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒ์‹œํ‚จ ์ƒํƒœ์—์„œ ์ด๋ฏธ์ง€๋„ ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ๋œ๋‹ค.

์šฐ์„  ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •๋ง๋กœ ์ข…๋ฃŒ, ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ docker ps -a ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•œ๋‹ค. ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋จ์„ ํ™•์ธํ•˜๋ฉด ์šฐ์„  docker image ls ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์ด๋ฏธ์ง€์˜ ์ƒํƒœ ๋ฐ ์ด๋ฆ„์„ ํ™•์ธํ•œ๋‹ค.

$ docker image ls
                                                                                                    i Info โ†’   U  In Use
IMAGE          ID             DISK USAGE   CONTENT SIZE   EXTRA
httpd:latest   305fd8326a27        177MB         47.6MB

์ฝ”๋“œ 2-7.

๊ทธ ํ›„, ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‚ญ์ œํ•œ๋‹ค.

$ docker image rm httpd
Untagged: httpd:latest
Deleted: sha256:305fd8326a27a137fedb8900f26375699ab233cc37793f35cf5d7c65671fb252
$ docker image ls
                                                                                                    i Info โ†’   U  In Use
IMAGE   ID             DISK USAGE   CONTENT SIZE   EXTRA

์ฝ”๋“œ 2-8.

docker image ls ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๋‹ˆ ํ•ด๋‹น ์ด๋ฏธ์ง€๊ฐ€ ์ž˜ ์‚ญ์ œ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

image์˜ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ๋‹ค์‹œ ํ™œ์šฉํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ตณ์ด ์‚ญ์ œํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์‚ญ์ œํ•  ๊ฒฝ์šฐ ๋‚˜์ค‘์— ๋‹ค์‹œ ํ™œ์šฉํ•  ๋•Œ DockerHub์—์„œ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผํ•˜๋Š” ๊ณผ์ •์ด ์ƒ๊ธฐ๊ธฐ์— ์ด ๊ณผ์ •์—์„œ ์‚ฌ์‹ค์ƒ ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ DockerHub์— ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ •๋ง๋กœ ๋‚˜์ค‘์— ๋‹ค์‹œ ์‚ฌ์šฉํ•  ๊ธฐํšŒ๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จ๋˜๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ์ง€๊ธˆ ๋‹น์žฅ ์ €์žฅ ์šฉ๋Ÿ‰ ํ™•๋ณด๊ฐ€ ์‹œ๊ธ‰ํ•œ ๊ฒฝ์šฐ ๋“ฑ์— ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.

์•ž์„  ์ฝ”๋“œ 2-7์—์„œ๋Š” ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ด ์ •ํ™•ํžˆ๋Š” httpd:latest ๋ผ ์จ์ ธ ์žˆ๋Š”๋ฐ, ์ฝœ๋ก (:) ๋’ค์— latest ๋ผ๊ณ  ์จ์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” httpd ๋งŒ ์ž…๋ ฅํ•ด๋„ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ httpd:2.4 ์™€ ๊ฐ™์ด ๋’ค์— ํŠน์ • ๋ฒ„์ „๋ช…์ด ๋ถ™์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ฒ„์ „๋ช…๊นŒ์ง€ ๋ช…์‹œํ•˜์—ฌ docker image rm httpd:2.4 ์™€ ๊ฐ™์ด ๋ช…์‹œํ•˜์—ฌ ์‚ญ์ œํ•ด์•ผํ•œ๋‹ค.

ํ•œ ํŽธ, cf265bec25a8 ์™€ ๊ฐ™์ด ๋ฌด์ž‘์œ„๋กœ ๊ฒฐ์ •๋˜๋Š” container ID์— ๋Œ€ํ•ด, ๋งจ ์•ž์˜ cf ์ฒ˜๋Ÿผ ์ƒ๋žตํ•˜๊ณ  ์ž…๋ ฅํ•ด๋„ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ช…๋ น ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜๋Š” container ID ๋ชจ๋‘ ์ž…๋ ฅํ•ด๋„ ๋œ๋‹ค.

  • docker stop cf
  • docker stop cf265bec25a8

๊ธ€์„ ๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” CLI ํ™˜๊ฒฝ์—์„œ docker image๋ฅผ ๋‚ด๋ ค๋ฐ›๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ, ์‹คํ–‰, ์ค‘๋‹จ, ์‚ญ์ œํ•ด๋ณด๋Š” ์ž‘์—…๊นŒ์ง€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๋‹ค. ์‚ฌ์‹ค ์ด ๊ธ€์—์„œ๋Š” docker์˜ ๊ธฐ์ดˆ์ ์ธ ์‚ฌ์šฉ๋ฒ•, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ์ดˆ์ ์„ ๋งž์ถ”์—ˆ๊ธฐ์— ํ•ต์‹ฌ๋งŒ์„ ์„ค๋ช…ํ•˜๋‹ค๋ณด๋‹ˆ, ์ด ๊ธ€์—์„œ ๋‹ค๋ฃฌ ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์•„๋งˆ ์‹ค๋ฌด์ ์ธ ํ™œ์šฉ์„ ํ•˜๊ธฐ๋Š” ์–ด๋ ค์šธ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๊ธ€์—์„œ ๋‹ค๋ฃฌ ๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์ƒ๋ช…์ฃผ๊ธฐ์— ์–ด๋А ์ •๋„ ์ˆ™์ง€๋˜์—ˆ๋‹ค๋ฉด ์•„๋งˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์ด ๋– ์˜ค๋ฅผ ๊ฒƒ์ด๋‹ค.

  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›น ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜์ง€?
  • ์›น ์„œ๋ฒ„, WAS, DB ๋“ฑ ์‹ค์ œ ์„ธ๊ณ„์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์„œ๋กœ ์—ฐ๊ณ„ํ•˜์—ฌ ์„œ๋น„์Šคํ•˜๋Š”๋ฐ, Docker์—์„œ๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์–ด๋–ป๊ฒŒ ์„œ๋กœ ์—ฐ๋™ํ•˜์ง€?
  • ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅํ•˜์ง€? ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ €์žฅํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ ์‹œ ๊ฐ™์ด ์‚ญ์ œ๋ ํ…๋ฐโ€ฆ

์ด๋Ÿฌํ•œ ์ ๋“ค์€ ์•ž์œผ๋กœ ๋‹ค๋ฅธ ๊ธ€๋“ค์—์„œ ํ•˜๋‚˜์”ฉ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ด๋‹ค.


References

[1] ์ง€์€์ด: ์˜ค๊ฐ€์‚ฌ์™€๋ผ ์‹œ๊ฒŒํƒ€์นด, ์˜ฎ๊ธด์ด: ์‹ฌํšจ์„ญ, โ€œ๊ทธ๋ฆผ๊ณผ ์‹ค์Šต์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋„์ปค & ์ฟ ๋ฒ„๋„คํ‹ฐ์Šคโ€œ, ์œ„ํ‚ค๋ถ์Šค

[2] Docker - ์ผ๊ฒฝํ—˜ ํ”„๋กœ๊ทธ๋žจ

[3] docker docs - Home

This content is licensed under CC BY-NC 4.0

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ